# EDF Energy (EDF GB) Kraken Customer Migration / Data Import REST API — OpenAPI 3.0.3, harvested verbatim. # Source URL : https://api.edfgb-kraken.energy/data-import/schema/ # Documented : https://developer.edfgb-kraken.energy/rest/guides/data-import/ # HTTP status : 200, Content-Type application/vnd.oai.openapi; charset=utf-8 # Fetched : 2026-07-27, anonymously, no API key, no account # Provenance : first-party EDF-hosted document. Nothing was added, removed or altered; # these comment lines are the only addition and do not change the parsed document. openapi: 3.0.3 info: title: Kraken version: v1 paths: /v1/data-import/account-import-process/create-or-update/: post: operationId: V1 Create Or Update Account Import Process description: As the name suggests, this endpoint stores the data in Kraken but does not create an account from the data. Staged account data can be updated as many times as you like before an account is created. summary: Use this endpoint to stage account data before creating an account. tags: - account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/EnergyAccount' required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CreateOrUpdateAccountImportProcess' examples: SuccessfulImportProcessModification.: value: external_account_number: '1234' import_supplier_code: TENTACLE_ENERGY summary: Successful import process modification. description: If the payload is valid, **and the request is updating data for an account that has been staged previously**, then a `200 OK` response will be returned detailing the `external_account_number` and `import_supplier`. '201': content: application/json: schema: $ref: '#/components/schemas/CreateOrUpdateAccountImportProcess' examples: SuccessfulImportProcessModification.: value: external_account_number: '1234' import_supplier_code: TENTACLE_ENERGY summary: Successful import process modification. description: If the payload is valid, **and the request is staging data for an account for the first time**, then a `201 Created` response will be returned detailing the `external_account_number` and `import_supplier`. '400': content: application/json: schema: $ref: '#/components/schemas/BadCreateOrUpdateAccountImportProcess' examples: PostcodeFieldMissingFromBillingAddress: value: billing_address: postcode: - postcode field is required. summary: Postcode field missing from billing address AccountProcessAlreadyImported.: value: external_account_number: EXTERNAL-1234 kraken_account_number: A-E8981832 non_field_errors: - The account import process with the account number EXTERNAL-1234 has already been imported. summary: Account process already imported. description: |2 If account data fails to be staged, then the details of the validation errors will be returned in the response. In this scenario, check that: - The payload is valid (refer to the field definitions and validation rules table). - The account has not been imported already, or marked to be skipped. - The migration for the `import_supplier` is still ongoing (if you receive an error indicating it is paused or complete, get in touch with the Kraken team). x-doc-alerts: - Before an account is staged, it is validated according to the same rules as the validate endpoint above. This is an extra safety check to make sure nothing has changed between creating the data and submitting it for staging in Kraken. /v1/data-import/account-import-process/process/: post: operationId: V1 Process Account Import Process description: The endpoint accepts a JSON payload that contains an object referencing existing staged account data. The `operations_team_name` that the account should be linked to should also be provided. An optional `dry_run` field is available to test the account creation process without actually creating the account. This is useful for testing the process to ensure that an account would be created successfully. summary: Use this endpoint to process staged account data into an account in Kraken. tags: - account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/ProcessAccountImportProcess' required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ProcessAccountImportProcessCreation' examples: SuccessfulAccountCreationFromAnExistingProcess.: value: external_account_number: '00001234' kraken_account_number: A-E8981832 account_number: A-E8981832 summary: Successful account creation from an existing process. description: If the payload is valid and an account has been created, the newly created Kraken account number will be returned in the response. '400': content: application/json: schema: $ref: '#/components/schemas/BadProcessAccountImportProcess' examples: AccountProcessAlreadyImported.: value: external_account_number: EXTERNAL-1234 kraken_account_number: A-E8981832 non_field_errors: - The account import process with the account number EXTERNAL-1234 has already been imported. summary: Account process already imported. AccountCreationInDry-runMode.: value: detail: Account would successfully import. Rolled back due to Dry Run. code: '400' summary: Account creation in dry-run mode. description: |2 If there are validation errors, they will be detailed in the body of the response. To resolve these errors, refer to the field definitions and validation rules. If an account has already been imported then two additional fields will be present in the response: `external_account_number` and `kraken_account_number`. If the API request was run with the `dry_run` flag set to `true`, and the request would ordinarily have been successful, then the response will also be returned. '429': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: There is an optional concurrency limit on the number of accounts that can be processed at once. If enabled, any requests to create an account that exceed this limit will be rejected. These requests should be retried once other ongoing accounts have finished processing. x-doc-alerts: - Before an account is created, it is validated according to the same rules as the validate endpoint above. This is an extra safety check to make sure nothing has changed between creating the data and submitting it for account creation in Kraken. - The referenced team must already exist in Kraken and the account data must already have been staged. /v1/data-import/account-transfer-status/{import_supplier_code}/{external_account_number}/: get: operationId: V1 Get Account Transfer Status description: Use this endpoint to find out the status of a single account import process. summary: Find out the status of a single account import process parameters: - in: path name: external_account_number schema: type: string description: The account number in the source system. required: true - in: path name: import_supplier_code schema: type: string description: The code of an existing Import Supplier. required: true tags: - account_import security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AccountTransferStatus' examples: FoundAccountTransferStatus: value: status: COMPLETED account_number: A-12AB34CD kraken_account_number: A-12AB34CD summary: Found account transfer status description: If the account import process exists (whether an account has been created or not), the `status` and `kraken_account_number` will be returned in the body of the response. If an account has not yet been created from the import data, then the `kraken_account_number` will be an empty string. '404': content: application/json: schema: $ref: '#/components/schemas/AccountNotFoundError' description: |2 If an account cannot be found for the given `import_supplier` and `external_account_number`, this response will be returned. To resolve the error, check that the account has been imported and that the `import_supplier` and `external_account_number` are correct. x-doc-alerts: [] /v1/data-import/all-account-import-processes/{import_supplier_code}/: get: operationId: V1 Get All Account Import Processes description: Use this endpoint to list all accounts for import, whether they are pending (their data has been staged) or have had a Kraken account created. summary: List all accounts for import parameters: - in: path name: import_supplier_code schema: type: string description: The code of an existing Import Supplier. required: true tags: - query security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ImportProcess' examples: AllAccountImportProcesses: value: - - external_account_number: '1234' kraken_account_number: null account_created_at: null - external_account_number: '5678' kraken_account_number: A-56785678 account_created_at: '2020-01-01T12:00:00Z' summary: All account import processes description: If any pending or imported accounts are found for the given `import_supplier_code`, they will be returned in the response. If the account is pending import then the `kraken_account_number` and `account_created_at will` be null. x-doc-alerts: [] /v1/data-import/historical-statements/create/: post: operationId: V1 Create Historical Statements description: Use this endpoint to import historical PDF statements onto an account. summary: Use this endpoint to import historical PDF statements onto an account. tags: - post_account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/HistoricalStatements' examples: ExamplePayload: value: import_supplier: TENTACLE_ENERGY external_account_number: EXTERNAL-1234 statements: - bill_period_from_date: '2022-01-01' bill_period_to_date: '2022-01-31' statement_id: '1' issued_date: '2022-02-02' number: '1' gross_amount: 100 statement_path: path/to/statement-1.pdf summary: Example payload required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '400': content: application/json: schema: $ref: '#/components/schemas/NonFieldErrors' examples: AccountNumberOrExternalAccountNumberMustBeProvided: value: non_field_errors: - Either account_number or external_account_number must be provided. summary: account_number or external_account_number must be provided description: Validation error. '404': description: The account import process or account have not been found. To resolve the error, check that the account has been imported (not just staged) and that the `import_supplier code` and `external_account_number` are correct. '201': content: application/json: schema: $ref: '#/components/schemas/HistoricalStatements' description: If the payload is valid, the validated data will be returned in the body of the response. x-doc-alerts: [] /v1/data-import/imported-account-import-processes/{import_supplier_code}/: get: operationId: V1 Get Imported Accounts description: Use this endpoint to list all accounts that have been imported and now have a Kraken account. summary: List all accounts that have been imported parameters: - in: path name: import_supplier_code schema: type: string description: The code of an existing Import Supplier. required: true tags: - query security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ImportProcess' examples: SuccessfullyImportedImportProcesses: value: - - external_account_number: '5678' kraken_account_number: A-56785678 account_created_at: '2020-01-01T12:00:00Z' summary: Successfully imported import processes description: If any imported accounts are found for the given `import_supplier_code`, they will be returned in the response. x-doc-alerts: [] /v1/data-import/meterpoint-statuses-for-account/{import_supplier_code}/{external_account_number}/: get: operationId: V1 Get Meter Point Statuses For Account description: Use this endpoint to list all meter point statuses by import supplier code and external account number. summary: List meter point statuses for an account parameters: - in: path name: external_account_number schema: type: string description: The account number in the source system. required: true - in: path name: import_supplier_code schema: type: string description: The code of an existing Import Supplier. required: true tags: - query security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/GbrMeterPointStatus' examples: StatusOfAMeterPoint: value: - - mpxn: '9349409806' status: PRE_REGISTRATION summary: Status of a meter point description: List of meter points and their status for given account & supplier. '404': content: application/json: schema: $ref: '#/components/schemas/GbrMeterPointStatusError' examples: NoMeterPointFound: value: error: No meterpoints found for A-1234. summary: No meter point found description: Error fetching meter points x-doc-alerts: [] /v1/data-import/notes/create/: post: operationId: V1 Create Account Notes description: |- Some points to note: - A note must contain at least one of the fields `body` or `document_paths`. - A `created_at` datetime may optionally be provided. Otherwise, it will default to the current local time. - The `document_paths` refer to the locations in S3 where attached documents are stored. - An optional `is_pinned` boolean can be passed in the payload to control whether this note will be pinned to the top of the Kraken account support site page. summary: Use this endpoint to add notes to an account. tags: - post_account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountNote' examples: ExamplePayload: value: import_supplier: TENTACLE_ENERGY external_account_number: EXTERNAL-1234 notes: - body: Some important pinned note. is_pinned: true unpin_at: '2020-06-01T12:00:00Z' - created_at: '2020-02-01T12:00:00Z' body: Some important note with an attachment. document_paths: - document_path: some/path/to/a/document.pdf summary: Example payload required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '400': content: application/json: schema: $ref: '#/components/schemas/NonFieldErrors' examples: AccountNumberOrExternalAccountNumberMustBeProvided: value: non_field_errors: - Either account_number or external_account_number must be provided. summary: account_number or external_account_number must be provided description: Validation error. '404': description: The account import process or account have not been found. To resolve the error, check that the account has been imported (not just staged) and that the `import_supplier code` and `external_account_number` are correct. '201': content: application/json: schema: $ref: '#/components/schemas/CreateAccountNotesResponse' examples: CreateNoteSuccessExample: value: - created_at: '2020-01-01T12:00:00Z' body: Something very important to import. status: NOTE_CREATION_SUCCESS - created_at: '2020-02-01T12:00:00Z' body: Something else very important to import. status: NOTE_ALREADY_EXISTS summary: Create note success example description: If the payload is valid, a list of the posted notes and their creation status will be returned in the response. A new note will only be created if a note on the account with the same body (and `created_at`, if provided) does not already exist. x-doc-alerts: [] /v1/data-import/payment-instruction/create/: post: operationId: V1 Create Payment Instruction description: Create a payment instruction. summary: Create a payment instruction. tags: - post_account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/LegacyPaymentInstruction' examples: ExamplePayload: value: import_supplier: TENTACLE_ENERGY external_account_number: EXTERNAL-1234 vendor: STRIPE reference: THIS-IS-A-FAKE-REFERENCE type: CARD summary: Example payload required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CreatePaymentInstructionResponse' examples: CreatedPaymentInstruction.: value: kraken_account_number: A-C90DC431 reference: THIS-IS-A-FAKE-REFERENCE summary: Created payment instruction. description: If the payload is valid, the Kraken account number and the reference will be returned. '400': content: application/json: schema: $ref: '#/components/schemas/CreatePaymentInstructionError' examples: AccountAlreadyHasAnActiveInstructionError.: value: error_detail: Account already has an active instruction external_account_number: '7654321' import_supplier: SOME_IMPORT_SUPPLIER reference: THIS-IS-A-FAKE-REFERENCE summary: Account already has an active instruction error. description: |2 If there are validation errors, the errors will be detailed in the body of the response. To resolve the error, refer to the field definitions and validation rules. This error can be returned if we have persistent issues communicating with the upstream payment vendor (we call their API to verify the instruction exists, and retrieve the details to store in Kraken). In this case, **the request should not be retried in its current form**. '500': content: application/json: schema: $ref: '#/components/schemas/CreatePaymentInstructionError' description: |2 This error can be returned if we have intermittent issues communicating with the upstream payment vendor (we call their API to verify the instruction exists, and retrieve the details to store in Kraken). In this case, **the request should be retried as-is**. x-doc-alerts: [] /v1/data-import/pending-account-import-processes/{import_supplier_code}/: get: operationId: V1 Get Pending Account Import Processes description: Use this endpoint to list all accounts pending import (their data has been staged). summary: List all accounts pending import parameters: - in: path name: import_supplier_code schema: type: string description: The code of an existing Import Supplier. required: true tags: - query security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ImportProcess' examples: PendingAccountImportProcesses: value: - - external_account_number: '1234' kraken_account_number: null account_created_at: null summary: Pending account import processes description: If any accounts pending import are found for the given `import_supplier_code`, they will be returned in the response. For consistency with the other APIs the `kraken_account_number` and `account_created_at` fields will be returned but will always be `null`. description: Pending import processes matching request parameters. x-doc-alerts: [] /v1/data-import/send-registration-flows/{import_supplier_code}/{external_account_number}/: post: operationId: V1 Send Registration Flows description: Use this endpoint to submit registration flows for meter points on an existing imported account. Note that this endpoint marks meter points to be registered. Kraken will then pick up these meter points and attempt to register them. Given a successful response from this API, it is still possible for the registration process to fail downstream. summary: Submit registration flows for meter points parameters: - in: path name: external_account_number schema: type: string description: The account number in the source system. required: true - in: path name: import_supplier_code schema: type: string description: The code of an existing Import Supplier. required: true tags: - post_account_import security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/GbrMeterPointRegistrationStatuses' examples: SuccessfulRegistrationFlowRequest: value: external_account_number: A-1234 import_supplier_code: TENTACLE_ENERGY meter_points: - mpxn: '1013004420117' status: REGISTRATION_FLOW_SUCCESS - mpxn: '3406086401' status: REGISTRATION_FLOW_ERROR error_detail: TEN not current supplier summary: Successful Registration Flow Request description: If the request is successful, a 200 OK response will be returned with an array of objects detailing the status of each of the meter points marked for enrolment. If a meter point was successfully marked for enrolment then a REGISTRATION_FLOW_SUCCESS status will be returned along with the MPAN or MPRN (mpxn). If there was an error in marking the meter point for enrolment then a REGISTRATION_FLOW_ERROR status will be returned along with the MPAN or MPRN and an additional error_detail field with more information on the reason for failure. '404': content: application/json: schema: $ref: '#/components/schemas/GbrRegistrationFlowError' examples: AccountNotFound: value: external_account_number: A-1234 import_supplier_code: TENTACLE_ENERGY error_detail: Account not found for A-1234. summary: Account not found description: If an account is not found, or no meter points are found on the account to register, then a 404 Not Found response will be returned. To resolve the error, check that the account has been imported (not just staged) and that the `import_supplier` code and `external_account_number` in the request are correct. x-doc-alerts: [] /v1/data-import/transactions/create/: post: operationId: V1 Create Transactions description: Use this endpoint to import financial transactions to an account. summary: Use this endpoint to import financial transactions to an account. parameters: - in: query name: check_previously_added schema: type: boolean default: true description: Boolean flag indicating whether to check if a transaction has already been added. - in: query name: force_add_to_current_statement schema: type: boolean default: true description: boolean flag. If set to true and the payload contains a transaction that is outside the currently-open statement period, this will modify the transaction date so that it is within the currently-open statement period. This then allows the transaction to be added to the statement instead of throwing an error. A description is added to the transaction to explain this, and a note is pinned to the account. tags: - post_account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/Transactions' examples: ExamplePayload: value: import_supplier: TENTACLE_ENERGY external_account_number: EXTERNAL-1234 transactions: - transaction_id: '1' transaction_date: '2019-10-01' amount: 10.0 type: CHARGE reason: IMPORTED_CHARGE display_note: Some customer facing note about the charge. reference: charge-reference-1 note: Some internal note about the charge. - transaction_id: '2' transaction_date: '2019-10-01' amount: 10.0 type: CHARGE reason: PREPAY_DEBT_ADJUSTMENT display_note: Some customer facing note about the prepay charge. reference: prepay-charge-reference-1 note: Some internal note about the prepay charge. to_prepay_meter_serial_number: Z16N389556 - transaction_id: '3' transaction_date: '2019-10-01' amount: 10.0 type: CREDIT reason: IMPORTED_CREDIT display_note: Some customer facing note about the credit. reference: credit-reference-1 note: Some internal note about the credit. - transaction_id: '4' transaction_date: '2019-10-01' amount: 10.0 type: PAYMENT reason: ACCOUNT_CHARGE_PAYMENT reference: payment-reference-1 payment_type: DD_REGULAR_COLLECTION note: Some internal note about the payment. - transaction_id: '5' transaction_date: '2019-10-01' amount: 10.0 type: REPAYMENT reason: FULL_CREDIT_REFUND reference: repayment-reference-1 payment_type: DIRECT_CREDIT note: Some internal note about the repayment. - transaction_id: '6' transaction_date: '2019-10-01' amount: 53.24 type: SUPPLY_CHARGE display_note: Some customer facing note about the supply charge. reference: supply-charge-reference-1 product_code: SOME-PRODUCT-CODE-4321 line_items: - rate_band: CONSUMPTION_STANDARD start_date: '2019-10-01' end_date: '2019-11-01' number_of_units: 4.0 net_amount: 44.0 price_per_unit: 11.0 units: - 4.0 - 8.0 tax_items: - amount: 9.24 tax_type: VAT value_taxed: 44.0 rate: 0.21 unit_type: PROPORTION summary: Example payload required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '400': content: application/json: schema: $ref: '#/components/schemas/BadCreateTransactionsRequest' examples: BadTransactionPayload: value: transactions: '0': reason: - Not a valid string. summary: Bad transaction payload ErrorCreatingTheTransaction: value: status: TRANSACTION_IMPORT_ERROR error_detail: 'UnableToCreateTransaction - 2019-09-28 of Payment #1 of 7100 on 2019-09-28 (ThirdParty) is not within the statement A-00000001 2019-10-01 - 2019-10-15 (OPEN) period' transaction_data: transaction_id: '1' transaction_date: '2019-09-28' amount: '71.00' type: PAYMENT reason: GENERAL_CREDIT reference: reference 1 payment_type: DEBIT_CARD summary: Error creating the transaction description: Could not create transactions '404': description: The account import process or account have not been found. To resolve the error, check that the account has been imported (not just staged) and that the `import_supplier code` and `external_account_number` are correct. '201': content: application/json: schema: $ref: '#/components/schemas/TransactionsCreated' examples: TransactionCreationResponseExample: value: results: - status: TRANSACTION_ALREADY_EXISTS transaction_data: transaction_id: '1' transaction_date: '2019-10-01' amount: '71.00' type: PAYMENT reason: GENERAL_CREDIT reference: reference 1 payment_type: DEBIT_CARD status: TRANSACTION_IMPORT_SUCCESS - status: TRANSACTION_ADDED_TO_ACCOUNT transaction_data: transaction_id: '2' transaction_date: '2019-10-04' amount: '180.00' type: PAYMENT reason: GENERAL_CREDIT reference: reference 2 payment_type: DEBIT_CARD summary: Transaction creation response example description: If the payload is valid, and there were no errors while importing the transactions, an object will be returned with a list of transactions that were passed in along with their creation statuses. x-doc-alerts: [] /v1/data-import/validate-account/: post: operationId: V1 Validate Account description: Use this endpoint to validate account data before staging and creating an account. summary: Use this endpoint to validate account data before staging and creating an account. tags: - account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/EnergyAccount' required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/EnergyAccount' description: If the payload is valid, the validated data will be returned in the body of the response. '400': content: application/json: schema: $ref: '#/components/schemas/BadValidateAccountRequest' examples: PostcodeFieldMissingFromBillingAddress: value: billing_address: postcode: - postcode field is required. summary: Postcode field missing from billing address AccountProcessAlreadyImported.: value: external_account_number: EXTERNAL-1234 kraken_account_number: A-E8981832 non_field_errors: - The account import process with the account number EXTERNAL-1234 has already been imported. summary: Account process already imported. description: If there are validation errors, they will be detailed in the body of the response. To resolve these errors, refer to the field definitions and validation rules. x-doc-alerts: [] /v2/data-import/accounts/: post: operationId: V2 Schedule Account Creation description: Use this endpoint to schedule the creation of an account in Kraken. It accepts a request containing the necessary information for account creation, validates the data, and creates an account migration task to be executed asynchronously. summary: Schedule the creation of an account in Kraken tags: - account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/ScheduleAccountCreation' examples: ExamplePayload: value: import_supplier: TENTACLE_ENERGY external_account_number: EXTERNAL-1234 unknown_occupier: false customers: - given_name: Bob family_name: Jabłoński email: bob@jablonski.com mobile: 07123456789 landline: '02072343456' date_of_birth: '1989-01-11' title: Mr salutation: Hi psr: - elec_industry_code: '01' effective_from: '2012-01-01' - gas_industry_code: '01' effective_from: '2012-01-01' customer_preferences: opted_into_sms: true opted_into_recommended: true opted_into_updates: true opted_into_third_parties: true opted_into_offers: true is_user_psr_consent_obtained: true billing_name: Robert Jabłoński billing_address1: 123 Fake Street billing_address2: '' billing_address3: '' billing_address4: '' billing_address5: '' billing_postcode: W1F 9DE account_type: DOMESTIC sales_channel: DIRECT sales_subchannel: '' supply_addresses: - supply_address1: 123 Fake Street supply_address2: '' supply_address3: '' supply_address4: '' supply_address5: '' supply_postcode: W1F 9DE is_landlord: false customer_at_supply_address_from_date: '2019-01-01' meter_points: - identifier: '1200060176720' supply_type: ELECTRICITY agreements: - tariff_code: ELEC-1234-J effective_from: '2019-08-01' mpid: TENT supply_start_date: '2019-01-01' profile_class: 1 ssc: 0393 meters: - meter_serial_number: Z16N389556 installed_on: '2001-01-01' registers: - register_id: '1' tpr: '00001' number_of_digits: 5 - register_id: X tpr: '00043' number_of_digits: 5 is_settlement: false transfer_readings: - register_id: '1' reading_date: '2019-08-01' reading_value: '1000.00' reading_type: CUSTOMER reading_history: - register_id: '1' reading_date: '2019-06-20' reading_value: '980.00' reading_type: CUSTOMER billed: true - register_id: '1' reading_date: '2019-05-20' reading_value: '960.00' reading_type: ROUTINE billed: true et_in_progress: false dr_in_progress: false smart_refusal_interest: type: NOT_INTERESTED date: '2020-04-01' refusal_reason: DO_NOT_OWN_HOME source: EMAIL eac_history: - effective_from: '2019-10-01' tpr: '00001' consumption: '1500' source: D0019 - effective_from: '2019-09-01' tpr: '00001' consumption: '1300' source: D0019 - identifier: '9353824109' supply_type: GAS agreements: - tariff_code: GAS-1234-J effective_from: '2019-08-01' mpid: TEN shipper_mpid: TCL supply_start_date: '2019-04-10' meters: - meter_serial_number: 54BV installed_on: '2002-01-01' gas_number_of_digits: 5 smart_type: SMETS1 transfer_readings: - reading_date: '2019-08-01' reading_value: '500.00' reading_type: CUSTOMER is_prepay: true prepay_details: debt_balance: '21.3' credit_balance: '12.3' transfer_vend_read_date: '2019-07-31' gas_debt_repayment_options: weekly_min: '3.00' weekly_max: '3.50' et_in_progress: false dr_in_progress: false aq_history: - effective_from: '2019-01-01' consumption: '8720' - effective_from: '2018-01-01' effective_to: '2018-12-31' consumption: '8712' - effective_from: '2017-01-01' effective_to: '2017-12-31' consumption: '8716' property_administrators: - given_name: Groundskeeper family_name: Willie email: groundskeeper@willie.com mobile: '07712354321' landline: '+442076543210' date_of_birth: '1955-02-23' title: Mr salutation: Hi transfer_balance: '30.00' ledgers: - current_statement_transactions: - transaction_id: '1' transaction_date: '2019-08-04' amount: '10.00' type: REPAYMENT reason: FULL_CREDIT_REFUND payment_type: '' - transaction_id: '2' transaction_date: '2019-08-05' amount: '20.00' type: PAYMENT reason: ACCOUNT_CHARGE_PAYMENT historical_statement_transactions: - transaction_id: '3' transaction_date: '2018-08-05' amount: '10.00' type: PAYMENT reason: ACCOUNT_CHARGE_PAYMENT - transaction_id: '4' transaction_date: '2018-07-05' amount: '10.00' type: CREDIT reason: DIRECT_DEBIT_DISCOUNT last_statement_closing_date: '2019-07-31' last_statement_balance: '20.00' last_statement_issue_date: '2019-08-01' ledger_balance: '30.00' last_billed_to_date: '2019-08-01' payment_schedules: - amount: '6.00' day_of_month: 10 frequency: MONTHLY means: DD start_date: '2018-01-01' is_debt_repayment_plan: true debt_repayment_element: '2.00' debt_repayment_end_date: '2020-03-26' - amount: '60.00' day_of_month: 2 frequency: MONTHLY means: DD start_date: '2018-01-01' references: - namespace: tentacle-energy.allpay-client-reference-number value: '1234567890' notes: - created_at: '2018-10-10T10:20:00Z' body: This is a note document_paths: - document_path: /notes/1234/attachment.jpg statements: - bill_period_from_date: '2019-06-01' bill_period_to_date: '2019-07-01' statement_path: /EXTERNAL-1234/2019-06-01-to-2019-07-01.pdf statement_id: '54321' - bill_period_from_date: '2019-07-01' bill_period_to_date: '2019-08-01' statement_path: /EXTERNAL-1234/2019-07-01-to-2019-08-01.pdf statement_id: '12345' warm_home_discount: - tax_year: 2017/18 account_type: CREDIT group: CORE dunning_path: path_name: standard_domestic start_date: '2020-03-26' debts: - agency_name: Debt R Us start_date: '2019-03-26' is_insolvent: false aged_debt: - debt_amount: '123.00' due_date: '2020-12-01' last_payment_review_date: '2019-06-01' next_bill_due_date: '2019-09-20' smart_read_frequency: HALF_HOURLY smart_read_cycle_day: 10 communication_preference: ONLINE document_accessibility: LARGE_PRINT account_campaigns: - slug: super_account campaign_note: Campaign note metadata: - key: metadata_key value: some_data: some_value summary: Example payload required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '201': description: The payload has been successfully scheduled. '400': content: application/json: schema: $ref: '#/components/schemas/DRFError' examples: ScheduleAccountCreationErrorResponse(ValidationError): value: code: import_process_failed_validation detail: Import process validation failed during account creation. Please validate the import process to get full details of the validation errors. domain: import_process summary: Schedule account creation error response (Validation Error) description: If there are validation errors, a 400 Bad Request response will be returned detailing the errors. To resolve these errors, refer to the field definitions and validation rules. ScheduleAccountCreationErrorResponse(AlreadyImportedAccount): value: non_field_errors: detail: The account import process with the account number 1234567890 has already been imported. code: account_import_process_already_imported account_id: A-12345678 summary: Schedule account creation error response (Already Imported Account) description: If an account has already been imported, a 400 Bad Request response will be returned with account_id representing existing Kraken account number. description: Validation errors occurred while processing the request. x-doc-alerts: - Before an account is created, it is validated according to the same rules as the validate endpoint above. This is an extra safety check to make sure nothing has changed between creating the data and submitting it for account creation in Kraken. /v2/data-import/accounts/{import_supplier_code}/{external_identifier}/: get: operationId: V2 Account Import Status description: Use this endpoint to retrieve the current status of an account import. summary: Return the status of an account import process parameters: - in: path name: external_identifier schema: type: string required: true - in: path name: import_supplier_code schema: type: string required: true tags: - account_import security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ImportStatusResponse' examples: 200OK-NoErrorInProcessing: value: status: CANCELLED | DRY_RUN_SUCCEEDED | IN_PROGRESS | PENDING | PROCESSED kraken_identifier: null created_at: '2025-10-07T09:00:21.179194+02:00' modified_at: '2025-10-07T09:06:38.078396+02:00' latest_event: event: EVENT_ACCOUNT_IMPORT_PROCESS_CREATED occurred_at: '2025-10-07T09:00:21.179194+02:00' data: null latest_error: null summary: 200 OK - No error in processing description: If the account import process exists, a 200 OK response will be returned, detailing the status. 200OK-ImportProcessIsProcessed: value: status: PROCESSED kraken_identifier: INTERNAL-KRAKEN-IDENTIFIER created_at: '2025-10-07T09:00:21.179194+02:00' modified_at: '2025-10-07T09:06:38.078396+02:00' latest_event: event: EVENT_ACCOUNT_IMPORT_PROCESS_PROCESSED occurred_at: '2025-10-07T09:06:38.078396+02:00' data: null latest_error: null summary: 200 OK - Import process is processed description: 'For example when the import process is processed we will have an internal kraken id:' 200OK-ErrorInProcessing: value: status: ERRORED | DRY_RUN_ERRORED kraken_identifier: null created_at: '2025-10-07T09:00:21.179194+02:00' modified_at: '2025-10-07T09:06:38.078396+02:00' latest_event: event: EVENT_ACCOUNT_IMPORT_PROCESS_ERRORED occurred_at: '2025-10-07T09:06:38.078396+02:00' data: code: some_error_code detail: A detailed error message domain: import_process latest_error: code: some_error_code detail: A detailed error message domain: import_process summary: 200 OK - Error in processing description: 'For example when there is an error in processing:' description: The status of the account import. '404': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: 404NotFound: value: detail: The requested resource was not found. code: not_found summary: 404 Not Found description: If the account import process does not exist, a 404 Not Found response will be returned. description: Import supplier code or external identifier not found. x-doc-alerts: [] /v2/data-import/accounts/validate/: post: operationId: V2 Validate Account description: Use this endpoint to validate the payload for creating an account in Kraken. It accepts a request containing the necessary information for account creation but only performs the validation of that data. Nothing will be created in Kraken through this endpoint. summary: Validate the payload for creating an account in Kraken tags: - account_import requestBody: content: application/json: schema: $ref: '#/components/schemas/ValidateAccount' examples: ExamplePayload: value: import_supplier: TENTACLE_ENERGY external_account_number: EXTERNAL-1234 unknown_occupier: false customers: - given_name: Bob family_name: Jabłoński email: bob@jablonski.com mobile: 07123456789 landline: '02072343456' date_of_birth: '1989-01-11' title: Mr salutation: Hi psr: - elec_industry_code: '01' effective_from: '2012-01-01' - gas_industry_code: '01' effective_from: '2012-01-01' customer_preferences: opted_into_sms: true opted_into_recommended: true opted_into_updates: true opted_into_third_parties: true opted_into_offers: true is_user_psr_consent_obtained: true billing_name: Robert Jabłoński billing_address1: 123 Fake Street billing_address2: '' billing_address3: '' billing_address4: '' billing_address5: '' billing_postcode: W1F 9DE account_type: DOMESTIC sales_channel: DIRECT sales_subchannel: '' supply_addresses: - supply_address1: 123 Fake Street supply_address2: '' supply_address3: '' supply_address4: '' supply_address5: '' supply_postcode: W1F 9DE is_landlord: false customer_at_supply_address_from_date: '2019-01-01' meter_points: - identifier: '1200060176720' supply_type: ELECTRICITY agreements: - tariff_code: ELEC-1234-J effective_from: '2019-08-01' mpid: TENT supply_start_date: '2019-01-01' profile_class: 1 ssc: 0393 meters: - meter_serial_number: Z16N389556 installed_on: '2001-01-01' registers: - register_id: '1' tpr: '00001' number_of_digits: 5 - register_id: X tpr: '00043' number_of_digits: 5 is_settlement: false transfer_readings: - register_id: '1' reading_date: '2019-08-01' reading_value: '1000.00' reading_type: CUSTOMER reading_history: - register_id: '1' reading_date: '2019-06-20' reading_value: '980.00' reading_type: CUSTOMER billed: true - register_id: '1' reading_date: '2019-05-20' reading_value: '960.00' reading_type: ROUTINE billed: true et_in_progress: false dr_in_progress: false smart_refusal_interest: type: NOT_INTERESTED date: '2020-04-01' refusal_reason: DO_NOT_OWN_HOME source: EMAIL eac_history: - effective_from: '2019-10-01' tpr: '00001' consumption: '1500' source: D0019 - effective_from: '2019-09-01' tpr: '00001' consumption: '1300' source: D0019 - identifier: '9353824109' supply_type: GAS agreements: - tariff_code: GAS-1234-J effective_from: '2019-08-01' mpid: TEN shipper_mpid: TCL supply_start_date: '2019-04-10' meters: - meter_serial_number: 54BV installed_on: '2002-01-01' gas_number_of_digits: 5 smart_type: SMETS1 transfer_readings: - reading_date: '2019-08-01' reading_value: '500.00' reading_type: CUSTOMER is_prepay: true prepay_details: debt_balance: '21.3' credit_balance: '12.3' transfer_vend_read_date: '2019-07-31' gas_debt_repayment_options: weekly_min: '3.00' weekly_max: '3.50' et_in_progress: false dr_in_progress: false aq_history: - effective_from: '2019-01-01' consumption: '8720' - effective_from: '2018-01-01' effective_to: '2018-12-31' consumption: '8712' - effective_from: '2017-01-01' effective_to: '2017-12-31' consumption: '8716' property_administrators: - given_name: Groundskeeper family_name: Willie email: groundskeeper@willie.com mobile: '07712354321' landline: '+442076543210' date_of_birth: '1955-02-23' title: Mr salutation: Hi transfer_balance: '30.00' ledgers: - current_statement_transactions: - transaction_id: '1' transaction_date: '2019-08-04' amount: '10.00' type: REPAYMENT reason: FULL_CREDIT_REFUND payment_type: '' - transaction_id: '2' transaction_date: '2019-08-05' amount: '20.00' type: PAYMENT reason: ACCOUNT_CHARGE_PAYMENT historical_statement_transactions: - transaction_id: '3' transaction_date: '2018-08-05' amount: '10.00' type: PAYMENT reason: ACCOUNT_CHARGE_PAYMENT - transaction_id: '4' transaction_date: '2018-07-05' amount: '10.00' type: CREDIT reason: DIRECT_DEBIT_DISCOUNT last_statement_closing_date: '2019-07-31' last_statement_balance: '20.00' last_statement_issue_date: '2019-08-01' ledger_balance: '30.00' last_billed_to_date: '2019-08-01' payment_schedules: - amount: '6.00' day_of_month: 10 frequency: MONTHLY means: DD start_date: '2018-01-01' is_debt_repayment_plan: true debt_repayment_element: '2.00' debt_repayment_end_date: '2020-03-26' - amount: '60.00' day_of_month: 2 frequency: MONTHLY means: DD start_date: '2018-01-01' references: - namespace: tentacle-energy.allpay-client-reference-number value: '1234567890' notes: - created_at: '2018-10-10T10:20:00Z' body: This is a note document_paths: - document_path: /notes/1234/attachment.jpg statements: - bill_period_from_date: '2019-06-01' bill_period_to_date: '2019-07-01' statement_path: /EXTERNAL-1234/2019-06-01-to-2019-07-01.pdf statement_id: '54321' - bill_period_from_date: '2019-07-01' bill_period_to_date: '2019-08-01' statement_path: /EXTERNAL-1234/2019-07-01-to-2019-08-01.pdf statement_id: '12345' warm_home_discount: - tax_year: 2017/18 account_type: CREDIT group: CORE dunning_path: path_name: standard_domestic start_date: '2020-03-26' debts: - agency_name: Debt R Us start_date: '2019-03-26' is_insolvent: false aged_debt: - debt_amount: '123.00' due_date: '2020-12-01' last_payment_review_date: '2019-06-01' next_bill_due_date: '2019-09-20' smart_read_frequency: HALF_HOURLY smart_read_cycle_day: 10 communication_preference: ONLINE document_accessibility: LARGE_PRINT account_campaigns: - slug: super_account campaign_note: Campaign note metadata: - key: metadata_key value: some_data: some_value summary: Example payload required: true security: - DataImportViewerAPIKeyAuthentication: [] - DRFKrakenTokenAuthentication: [] responses: '200': description: The payload was validated successfully. '400': content: application/json: schema: $ref: '#/components/schemas/StandardizedValidationErrorResponse' examples: AccountValidationErrorResponse: value: customers: '0': landline: - abcde is not a valid phone number summary: Account validation error response description: If there are validation errors a 400 Bad Request response will be returned detailing the errors. To resolve these errors, refer to the field definitions and validation rules. description: Validation errors occurred while processing the request. x-doc-alerts: [] components: schemas: AccountAlreadyImportedResponse: type: object properties: external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

maxLength: 128 kraken_account_number: type: string description: Account number maxLength: 128 non_field_errors: type: array items: type: string description:

This represents errors that may arise that are not associated with a single field. Instead, these errors may affect the entire object or multiple fields together.

required: - external_account_number - kraken_account_number - non_field_errors AccountCampaign: type: object properties: campaign_name: enum: - 2G/3G CH North - Abusive Customer - Administration In Place - Administrative Receiverships in Place - Aged Gas Meter Campaign - AMR - AMR Campaign - AMR - MLV - Apology DNC - Appointment Cancellation - Approved RP Exception - April Renewal 75 Incentive - April Renewals Tariff - ARUDD Effected Accounts - ASC Campaign - August renewal high value - August renewal promo 50 - 'Back Office Only: SWHDR' - Balance in dispute - Bankruptcy In Place - BB Debt Payment Required - BDC_NoRebook - Bill Explainer Customer - Bill VAT - Breathing Space - Broker Contract - Broker_no_dd - Bupa Staff - Calisen Smart Meter Health Site Visit - CAMPAIGN TEST - CA_PLYMOUTH_ENGAGED - Carer - Charis referral - Children Under 2 - Complaint Bill-Hold - Complex Non-PSR - Complex PSR - Cos auto objection removal - Customer Support Fund Application Received - CUSTOMER_SUPPORT_FUND_ENGAGED - CVA in Place - CYPL Campaign Test - DD OB Initiative - DD Refund Campaign - Debt 365 - DEBT_ARRANGEMENT_SCHEME_ACTIVE - DEBT_MANAGEMENT_PLAN_ACTIVE - Debt Payment Required - DeemedCampaign1 - DeemedCampaign2 - Dissolved Company - DM Debt Payment Required - DMP Rejected - DNC DM Debt Payment Required BO only - DRO In Place - DRS Eligible Debt - DRS Phase 1 Applied - DRS Phase 1 Eligible - DRS Phase 1 Qualified - DS Exclusion - E7 Low Night Usage Legacy - E7 Low Night Usage Smart v2 - ECO4 Debt Campaign - Economy 9 Exceptions - Economy 9 Fixed - Economy 9 Migration Pot - Economy 9 Migrations - EHH data pending - ELEC DMEX Applied - Elective HHS Eligible - Elective HHS FreePhase - Elective HHS PodPoint - Elective HHS Smart Charge Bolt-On - Electricity Recertification - Engage Employee Tariff - EV Promo Code Retention - EVRI partnership - EV Tariffs - Extend Excl Sep26 - Extend Excl Sep26v2 - Extend Excl Sep26v3 - Extension offer jul25 - Extension offer jul25_ - Extension offer jul25v2 - Extension offer jul25v2_ - Extension offer jul25v3 - Extension offer jul25v3_ - Extension offer jun25 - Extension offer jun25_ - Extension offer jun25v2 - Extension offer jun25v2_ - Field Debt Hold - Address Issues - Field Debt Hold - Address Mismatch - Field Debt Hold - Bankruptcy/DRO/IVA - Field Debt Hold - Commercial Size Meter - Field Debt Hold - Crossed Metering - Field Debt Hold - Demolished - Field Debt Hold - Disconnected Meter - Field Debt Hold - Dissolved/Liquidated/Administration - Field Debt Hold - DNO - Field Debt Hold - Legal - Field Debt Hold - Locksmith or Shutter Engineer - Field Debt Hold - Meter Details Incorrect - Field Debt Hold - No Room for Hot shoe - Field Debt Hold Officer Assaulted - Field Debt Hold - PAYG Not safe and reasonably practicable - Field Debt Hold - Pending Demolition - Field Debt Hold - Potential Officer Risk - Field Debt Hold - Residential Landlords Supply - Field Debt Hold - Residential Manual Placement - Field Debt Hold - Technical Meter Issues - Field Debt Hold - Unable to access Meter - Field Debt Hold - Unable To Locate Address - Field Debt Hold - Unable To Locate Meter - Field Debt Hold - Unsafe Premise - Field Meter Read Visit Outcome_Access Refused - Field Meter Read Visit Outcome_Access Refused_Appointment Required - Field Meter Read Visit Outcome_Access Refused_Password Required for Access - Field Meter Read Visit Outcome_Cancelled - Field Meter Read Visit Outcome_Demolished - Field Meter Read Visit Outcome_Insufficient Address - Field Meter Read Visit Outcome_Insufficient Address_Incorrect Postcode - Field Meter Read Visit Outcome_Insufficient Address_Missing Business Name - Field Meter Read Visit Outcome_Insufficient Address_Missing House Name or No - Field Meter Read Visit Outcome_Insufficient Address_Missing Street Name - Field Meter Read Visit Outcome_Insufficient Address_Missing Town - Field Meter Read Visit Outcome_Meter Blocked - Field Meter Read Visit Outcome_Meter De_Energised - Field Meter Read Visit Outcome_Meter Faulty - Field Meter Read Visit Outcome_Meter Perm Blocked - Field Meter Read Visit Outcome_Meter Temp Blocked - Field Meter Read Visit Outcome_Meter Temp Blocked_Key or Code Required - Field Meter Read Visit Outcome_No Access_KeyCode Unavailable - Field Meter Read Visit Outcome_Read Received - Field Meter Read Visit Outcome_Unsafe Premises - Field Meter Read Visit Outcome_Vacant - FINAL_BILL_ISSUED - Final RTS - Financial Vulnerability - Fixed billing pathway test - FM eligible - FM Generic Rebook Comms - FM Ineligible - FM - Rebook no action required - FM Temp ineligible – customer action - FM Temp ineligible - EDF action - FM Temp ineligible - external action - FM Temp ineligible – investigate - Football Free Event Interest Capture - former OPUS customer - FRAUD RISK read pinned note - Fuel Direct - Fuel Direct arrears only - GAS AMR - GAS DMEX Applied - General Hazard - Grant Lee Test - GrantLeeTEST - Grant Lee Test v2 - grants ev test - Grantspromotest - Green Deal - GSOP3 IHD Only - GSOP3 Smart Meter and IHD - GSOP3 Smart Meter Only - GSOP4 DCC Mitigation - GSOP4 External Partner Mitigation - Hazard_Identified - Heaters for RTS PSR Customers - Heatwave Relief Pack - Requested - High Affordability - High Value Debt Validation - INCOMEMAX_ENGAGED - IncomeMax Referral - Insufficient Address - Involuntary PAYG Mode Change - IVA IN PLACE - IVR Solar Promotion - Jan26 Early Renewal - Jul26 Renewal Exclusive - Jul26 Renewal Exclusive PAYG - June26 Renewal Exclusive - Large Gas Customer - Large Gas on Site - Lasting Power Of Attorney - Legacy RP Migration Exception - Life Support - Liquidation in Place - Live Aged Debt Write-off - Living Alone - Low Standing Charge Trial - Manual Payment Adequacy Complete - March Renewals - May renew 100 - May renew 125 - May renew 150 - May renew 175 - May renew 200 - May renew 50 - May renew 75 - May Renewal Promotion 75 - May Renewals Tariff - Mental Health Crisis - Meter At Height Identified - Meter Blocked - Meter Recertification Needed - Meter Safely Accessible - MHHS in Progress - Migrated Term Debt - Migrated Term Written-Off Debt - Migration Bill-Hold - Migration DD Tariff - Missing Comms Hub GUID - Request from customer - Missing Meter and CHF GUID - Request both from customer - MPAAS SMH - MPAAS SMH Dual Fuel - MPAAS SMH Electric - MPAAS SMH Gas - MPG - NAA - Nissan Staff - NKC/LKC emails - October renewal promo 100 - October renewal promo 150 - October renewal promo 50 - Official Complaint - Opus Change DDI Date - Opus disputed balance - OPUS Litigation - Opus Migration Read Dispute - Opus Pending COT - Oriel Placement - outbound_billing_comms_BackBilling Bulk Release Update - Outbound Billing Comms DY NT CIP620 - Outbound Meter Reading - Outbound Meter Reading Request-Dialer_TCS - Outbound Meter Reading Request-Field_Calisen - Outbound Meter Reading Request-Field_MDS - Outbound Meter Reading Request-SMS - Overdales DCA Placement - Overdales SAP Campaign - Part Payment Initiative - PAYG Debt Validated - PAYG payment holiday elec - PAYG payment holiday gas - PAYG/PPM Gas Summer - Payment Adequacy Exemption - PCAB Referral - Pod Drive - Pod Drive - Declined - Pod Point Plug In Smart - Porting test DO NOT USE - Post Lapse SVT - Potential Exchange to 4G Comms Hub - Potential Insolvency - Pozitive - PP Compensation Review Customer - PPM Debt Validated - Pre Litigation - Premier Foods Staff - Previous Insolvency - Price Change Negative Advance Hold - Price Change Notification Hold - Promo 100 August Renew - Promo 100 July Renew - Promo 100 June Renew - Promo 100 Nov Renewal - Promo 100 Oct Renewal - Promo 125 June Renew - Promo 125 Nov Renewal - Promo 150 August Renew - Promo 150 July Renew - Promo 150 June Renew - Promo 150 Nov Renewal - Promo 150 Oct Renewal - Promo 175 June Renew - Promo 175 Nov Renewal - Promo 200 August Renew - Promo 200 July Renew - Promo 200 June Renew - Promo 200 Nov Renewal - Promo 25 Nov Renewal - Promo 50 August Renew - Promo 50 July Renew - Promo 50 June Renew - Promo 50 Nov Renewal - Promo 50 Oct Renewal - Promo 50 SVT May26 - Promo 75 June Renew - Promo 75 Nov Renewal - Promo code app test - Promo HM 50 Home Move Retention - PROMO TEST - Promo test2 Grant - Radio TeleSwitch (RTS) (Eligible) - Radio TeleSwitch (RTS) (ineligible) - Read required for settlement - Refused Access - Appointment Letter - Refused Access - CoR - Refused Access - Obstructive - Registered for Flextras - Renewal window - Repayment AI chatbot - Resi Litigation - ResQ staff - Rev Ops Tactical Intervention Engage DCA Placement - Rev Ops Tactical Intervention over 20k debt loading - Rev Ops Tactical Intervention Overdales DCA Placement - Rev Ops Tactical Intervention Prelegal Fulmar - Rev Ops Tactical Intervention Prelegal Fulmar LTD Customer - Rev Ops Tactical Intervention Prelegal GLC - Rev Ops Tactical Intervention Prelegal Judge and Priestly 30 days - Rev Ops Tactical Intervention Prelegal Judge and Priestly 60 days - Rev Ops Tactical Intervention SB Resi End User Involuntary Payment Change - Rev Ops Tactical Intervention Sonex High Affordability - Rev Ops Tactical Intervention Sonex Low Affordability - Rev Ops Tactical Intervention Term to Live Campaign - Rev Ops Tactical Intervention Warrant Progression - RMG Staff - RMS SMS - RP Migration - RP Migration Multiple - RP Migration POROB - RTS Blanking plates - RTS_Exotic Metering Site - RTS myacc exclusions - RTS Site_ Cannot match current off peak times - RTS Site_Exotic Metering - RTS Site_Matched current off peak times - RTS Site_We can match current off peak times - RTS Site_We cannot match current off peak times - Safeguarding Product Eligibility - Sanctioned customer - SB BB Debt Payment Required - SB Commercial Size Meter - SB HH Opt outs - SB High Value Renewals - SB Large Capacity Meter Disconnection - SB Litigation - SB - No Room for Hot shoe - SB_Online_Renewal - SB PAYG - SB Remote Disconnection - SB Warrant - DNO Required - SB Warrant - Locksmith or Shutter Engineer - SB Warrant - Technical Meter Issues - September 2024 Renewal Exclusive - September 2024 Renewals Exclusive - September end date - price extension - September renewal promo 150 - September renewal promo 50 - September Renew Test - Small Business Account Resi End User - Small Business Vulnerability - Smart_Apology - Smart Campaign Exclusion MMHS - SmartFlex Tester - Smart Incentive - Smart Incentive Q1 - SMETS Upgrade - SMH Calisen Live - SMH Calisen Other - Solar Nil Bill Case Study - Solar Shift V3 - Solar Shift V3 Send 2 - Sold to Lowell - Sonex Energy Theft Investigation - Sonex Non Standard DD - Sonex Placement - Sonex Repayment Plan - Stay Connected 24 - Sunday Saver Interest 2025 - Sunday Saver Interest April 2025 - Sunday Saver Interest Capture - sunday saver interest capture from september 25 - Sunday Saver Interest for April 26 - Sunday Saver Interest for August 26 - Sunday Saver Interest for December - Sunday Saver Interest for February - Sunday Saver Interest for February 26 - Sunday Saver Interest for January - Sunday Saver Interest for July 26 - Sunday Saver Interest for June 26 - Sunday Saver Interest for March - Sunday Saver Interest for March 26 - Sunday Saver Interest for May 26 - Sunday Saver Interest for November - Sunday Saver Interest for October - Sunday Saver Interest from June 25 - Sunday Saver Interest June 2025 - Sunday Saver Interest May 2025 - Sunday Saver Interest Pause - Tastecard Marketing Campaign - Staff - Tell Jo - Temp DNC - Tesco Staff - Test Campaign - Testing - Marketing - Testing - Marketing 2 - The Vulnerability Partnership Non Standard DD - The Vulnerability Partnership Placement - The Vulnerability Partnership Repayment Plan - Traditional Half Hourly Meter - Twin Element Meter Installed - Unhealthy Smart meter - exchange required - United Utilities Staff - Utilita Migrated Customer - VM02 switch off - Vodafone staff - VWAN - Warm Home Discount NR 2026 - WHD Broader Group - WHD Core Group 1 - WHD Core Group 2 - WHD - Non redeemer - Cheques - WHD - Non redeemer - Prepay Voucher - Whitbread Staff - Winddown Campaign - Write-off - Write-off - Deceased - Write-off - Historic SAP Term Debt - Write off - Small Business - Write off - Term DCA Settlement Agreed - WRR IE Received - WW Bundles - WW Choices - WW FAPs - '' - null type: string x-spec-enum-id: 1d6977d05b15b83f nullable: true default: '' description:

The name of the campaign. Campaigns must already exist in Kraken.

x-enum-descriptions: 2G/3G CH North: 2G/3G CH North Abusive Customer: Abusive Customer Administration In Place: Administration In Place Administrative Receiverships in Place: Administrative Receiverships in Place Aged Gas Meter Campaign: Aged Gas Meter Campaign AMR: AMR AMR Campaign: AMR Campaign AMR - MLV: AMR - MLV Apology DNC: Apology DNC Appointment Cancellation: Appointment Cancellation Approved RP Exception: Approved RP Exception April Renewal 75 Incentive: April Renewal 75 Incentive April Renewals Tariff: April Renewals Tariff ARUDD Effected Accounts: ARUDD Effected Accounts ASC Campaign: ASC Campaign August renewal high value: August renewal high value August renewal promo 50: August renewal promo 50 'Back Office Only: SWHDR': 'Back Office Only: SWHDR' Balance in dispute: Balance in dispute Bankruptcy In Place: Bankruptcy In Place BB Debt Payment Required: BB Debt Payment Required BDC_NoRebook: BDC_NoRebook Bill Explainer Customer: Bill Explainer Customer Bill VAT: Bill VAT Breathing Space: Breathing Space Broker Contract: Broker Contract Broker_no_dd: Broker_no_dd Bupa Staff: Bupa Staff Calisen Smart Meter Health Site Visit: Calisen Smart Meter Health Site Visit CAMPAIGN TEST: CAMPAIGN TEST CA_PLYMOUTH_ENGAGED: CA_PLYMOUTH_ENGAGED Carer: Carer Charis referral: Charis referral Children Under 2: Children Under 2 Complaint Bill-Hold: Complaint Bill-Hold Complex Non-PSR: Complex Non-PSR Complex PSR: Complex PSR Cos auto objection removal: Cos auto objection removal Customer Support Fund Application Received: Customer Support Fund Application Received CUSTOMER_SUPPORT_FUND_ENGAGED: CUSTOMER_SUPPORT_FUND_ENGAGED CVA in Place: CVA in Place CYPL Campaign Test: CYPL Campaign Test DD OB Initiative: DD OB Initiative DD Refund Campaign: DD Refund Campaign Debt 365: Debt 365 DEBT_ARRANGEMENT_SCHEME_ACTIVE: DEBT_ARRANGEMENT_SCHEME_ACTIVE DEBT_MANAGEMENT_PLAN_ACTIVE: DEBT_MANAGEMENT_PLAN_ACTIVE Debt Payment Required: Debt Payment Required DeemedCampaign1: DeemedCampaign1 DeemedCampaign2: DeemedCampaign2 Dissolved Company: Dissolved Company DM Debt Payment Required: DM Debt Payment Required DMP Rejected: DMP Rejected DNC DM Debt Payment Required BO only: DNC DM Debt Payment Required BO only DRO In Place: DRO In Place DRS Eligible Debt: DRS Eligible Debt DRS Phase 1 Applied: DRS Phase 1 Applied DRS Phase 1 Eligible: DRS Phase 1 Eligible DRS Phase 1 Qualified: DRS Phase 1 Qualified DS Exclusion: DS Exclusion E7 Low Night Usage Legacy: E7 Low Night Usage Legacy E7 Low Night Usage Smart v2: E7 Low Night Usage Smart v2 ECO4 Debt Campaign: ECO4 Debt Campaign Economy 9 Exceptions: Economy 9 Exceptions Economy 9 Fixed: Economy 9 Fixed Economy 9 Migration Pot: Economy 9 Migration Pot Economy 9 Migrations: Economy 9 Migrations EHH data pending: EHH data pending ELEC DMEX Applied: ELEC DMEX Applied Elective HHS Eligible: Elective HHS Eligible Elective HHS FreePhase: Elective HHS FreePhase Elective HHS PodPoint: Elective HHS PodPoint Elective HHS Smart Charge Bolt-On: Elective HHS Smart Charge Bolt-On Electricity Recertification: Electricity Recertification Engage Employee Tariff: Engage Employee Tariff EV Promo Code Retention: EV Promo Code Retention EVRI partnership: EVRI partnership EV Tariffs: EV Tariffs Extend Excl Sep26: Extend Excl Sep26 Extend Excl Sep26v2: Extend Excl Sep26v2 Extend Excl Sep26v3: Extend Excl Sep26v3 Extension offer jul25: Extension offer jul25 Extension offer jul25_: Extension offer jul25_ Extension offer jul25v2: Extension offer jul25v2 Extension offer jul25v2_: Extension offer jul25v2_ Extension offer jul25v3: Extension offer jul25v3 Extension offer jul25v3_: Extension offer jul25v3_ Extension offer jun25: Extension offer jun25 Extension offer jun25_: Extension offer jun25_ Extension offer jun25v2: Extension offer jun25v2 Extension offer jun25v2_: Extension offer jun25v2_ Field Debt Hold - Address Issues: Field Debt Hold - Address Issues Field Debt Hold - Address Mismatch: Field Debt Hold - Address Mismatch Field Debt Hold - Bankruptcy/DRO/IVA: Field Debt Hold - Bankruptcy/DRO/IVA Field Debt Hold - Commercial Size Meter: Field Debt Hold - Commercial Size Meter Field Debt Hold - Crossed Metering: Field Debt Hold - Crossed Metering Field Debt Hold - Demolished: Field Debt Hold - Demolished Field Debt Hold - Disconnected Meter: Field Debt Hold - Disconnected Meter Field Debt Hold - Dissolved/Liquidated/Administration: Field Debt Hold - Dissolved/Liquidated/Administration Field Debt Hold - DNO: Field Debt Hold - DNO Field Debt Hold - Legal: Field Debt Hold - Legal Field Debt Hold - Locksmith or Shutter Engineer: Field Debt Hold - Locksmith or Shutter Engineer Field Debt Hold - Meter Details Incorrect: Field Debt Hold - Meter Details Incorrect Field Debt Hold - No Room for Hot shoe: Field Debt Hold - No Room for Hot shoe Field Debt Hold Officer Assaulted: Field Debt Hold Officer Assaulted Field Debt Hold - PAYG Not safe and reasonably practicable: Field Debt Hold - PAYG Not safe and reasonably practicable Field Debt Hold - Pending Demolition: Field Debt Hold - Pending Demolition Field Debt Hold - Potential Officer Risk: Field Debt Hold - Potential Officer Risk Field Debt Hold - Residential Landlords Supply: Field Debt Hold - Residential Landlords Supply Field Debt Hold - Residential Manual Placement: Field Debt Hold - Residential Manual Placement Field Debt Hold - Technical Meter Issues: Field Debt Hold - Technical Meter Issues Field Debt Hold - Unable to access Meter: Field Debt Hold - Unable to access Meter Field Debt Hold - Unable To Locate Address: Field Debt Hold - Unable To Locate Address Field Debt Hold - Unable To Locate Meter: Field Debt Hold - Unable To Locate Meter Field Debt Hold - Unsafe Premise: Field Debt Hold - Unsafe Premise Field Meter Read Visit Outcome_Access Refused: Field Meter Read Visit Outcome_Access Refused Field Meter Read Visit Outcome_Access Refused_Appointment Required: Field Meter Read Visit Outcome_Access Refused_Appointment Required Field Meter Read Visit Outcome_Access Refused_Password Required for Access: Field Meter Read Visit Outcome_Access Refused_Password Required for Access Field Meter Read Visit Outcome_Cancelled: Field Meter Read Visit Outcome_Cancelled Field Meter Read Visit Outcome_Demolished: Field Meter Read Visit Outcome_Demolished Field Meter Read Visit Outcome_Insufficient Address: Field Meter Read Visit Outcome_Insufficient Address Field Meter Read Visit Outcome_Insufficient Address_Incorrect Postcode: Field Meter Read Visit Outcome_Insufficient Address_Incorrect Postcode Field Meter Read Visit Outcome_Insufficient Address_Missing Business Name: Field Meter Read Visit Outcome_Insufficient Address_Missing Business Name Field Meter Read Visit Outcome_Insufficient Address_Missing House Name or No: Field Meter Read Visit Outcome_Insufficient Address_Missing House Name or No Field Meter Read Visit Outcome_Insufficient Address_Missing Street Name: Field Meter Read Visit Outcome_Insufficient Address_Missing Street Name Field Meter Read Visit Outcome_Insufficient Address_Missing Town: Field Meter Read Visit Outcome_Insufficient Address_Missing Town Field Meter Read Visit Outcome_Meter Blocked: Field Meter Read Visit Outcome_Meter Blocked Field Meter Read Visit Outcome_Meter De_Energised: Field Meter Read Visit Outcome_Meter De_Energised Field Meter Read Visit Outcome_Meter Faulty: Field Meter Read Visit Outcome_Meter Faulty Field Meter Read Visit Outcome_Meter Perm Blocked: Field Meter Read Visit Outcome_Meter Perm Blocked Field Meter Read Visit Outcome_Meter Temp Blocked: Field Meter Read Visit Outcome_Meter Temp Blocked Field Meter Read Visit Outcome_Meter Temp Blocked_Key or Code Required: Field Meter Read Visit Outcome_Meter Temp Blocked_Key or Code Required Field Meter Read Visit Outcome_No Access_KeyCode Unavailable: Field Meter Read Visit Outcome_No Access_KeyCode Unavailable Field Meter Read Visit Outcome_Read Received: Field Meter Read Visit Outcome_Read Received Field Meter Read Visit Outcome_Unsafe Premises: Field Meter Read Visit Outcome_Unsafe Premises Field Meter Read Visit Outcome_Vacant: Field Meter Read Visit Outcome_Vacant FINAL_BILL_ISSUED: FINAL_BILL_ISSUED Final RTS: Final RTS Financial Vulnerability: Financial Vulnerability Fixed billing pathway test: Fixed billing pathway test FM eligible: FM eligible FM Generic Rebook Comms: FM Generic Rebook Comms FM Ineligible: FM Ineligible FM - Rebook no action required: FM - Rebook no action required FM Temp ineligible – customer action: FM Temp ineligible – customer action FM Temp ineligible - EDF action: FM Temp ineligible - EDF action FM Temp ineligible - external action: FM Temp ineligible - external action FM Temp ineligible – investigate: FM Temp ineligible – investigate Football Free Event Interest Capture: Football Free Event Interest Capture former OPUS customer: former OPUS customer FRAUD RISK read pinned note: FRAUD RISK read pinned note Fuel Direct: Fuel Direct Fuel Direct arrears only: Fuel Direct arrears only GAS AMR: GAS AMR GAS DMEX Applied: GAS DMEX Applied General Hazard: General Hazard Grant Lee Test: Grant Lee Test GrantLeeTEST: GrantLeeTEST Grant Lee Test v2: Grant Lee Test v2 grants ev test: grants ev test Grantspromotest: Grantspromotest Green Deal: Green Deal GSOP3 IHD Only: GSOP3 IHD Only GSOP3 Smart Meter and IHD: GSOP3 Smart Meter and IHD GSOP3 Smart Meter Only: GSOP3 Smart Meter Only GSOP4 DCC Mitigation: GSOP4 DCC Mitigation GSOP4 External Partner Mitigation: GSOP4 External Partner Mitigation Hazard_Identified: Hazard_Identified Heaters for RTS PSR Customers: Heaters for RTS PSR Customers Heatwave Relief Pack - Requested: Heatwave Relief Pack - Requested High Affordability: High Affordability High Value Debt Validation: High Value Debt Validation INCOMEMAX_ENGAGED: INCOMEMAX_ENGAGED IncomeMax Referral: IncomeMax Referral Insufficient Address: Insufficient Address Involuntary PAYG Mode Change: Involuntary PAYG Mode Change IVA IN PLACE: IVA IN PLACE IVR Solar Promotion: IVR Solar Promotion Jan26 Early Renewal: Jan26 Early Renewal Jul26 Renewal Exclusive: Jul26 Renewal Exclusive Jul26 Renewal Exclusive PAYG: Jul26 Renewal Exclusive PAYG June26 Renewal Exclusive: June26 Renewal Exclusive Large Gas Customer: Large Gas Customer Large Gas on Site: Large Gas on Site Lasting Power Of Attorney: Lasting Power Of Attorney Legacy RP Migration Exception: Legacy RP Migration Exception Life Support: Life Support Liquidation in Place: Liquidation in Place Live Aged Debt Write-off: Live Aged Debt Write-off Living Alone: Living Alone Low Standing Charge Trial: Low Standing Charge Trial Manual Payment Adequacy Complete: Manual Payment Adequacy Complete March Renewals: March Renewals May renew 100: May renew 100 May renew 125: May renew 125 May renew 150: May renew 150 May renew 175: May renew 175 May renew 200: May renew 200 May renew 50: May renew 50 May renew 75: May renew 75 May Renewal Promotion 75: May Renewal Promotion 75 May Renewals Tariff: May Renewals Tariff Mental Health Crisis: Mental Health Crisis Meter At Height Identified: Meter At Height Identified Meter Blocked: Meter Blocked Meter Recertification Needed: Meter Recertification Needed Meter Safely Accessible: Meter Safely Accessible MHHS in Progress: MHHS in Progress Migrated Term Debt: Migrated Term Debt Migrated Term Written-Off Debt: Migrated Term Written-Off Debt Migration Bill-Hold: Migration Bill-Hold Migration DD Tariff: Migration DD Tariff Missing Comms Hub GUID - Request from customer: Missing Comms Hub GUID - Request from customer Missing Meter and CHF GUID - Request both from customer: Missing Meter and CHF GUID - Request both from customer MPAAS SMH: MPAAS SMH MPAAS SMH Dual Fuel: MPAAS SMH Dual Fuel MPAAS SMH Electric: MPAAS SMH Electric MPAAS SMH Gas: MPAAS SMH Gas MPG: MPG NAA: NAA Nissan Staff: Nissan Staff NKC/LKC emails: NKC/LKC emails October renewal promo 100: October renewal promo 100 October renewal promo 150: October renewal promo 150 October renewal promo 50: October renewal promo 50 Official Complaint: Official Complaint Opus Change DDI Date: Opus Change DDI Date Opus disputed balance: Opus disputed balance OPUS Litigation: OPUS Litigation Opus Migration Read Dispute: Opus Migration Read Dispute Opus Pending COT: Opus Pending COT Oriel Placement: Oriel Placement outbound_billing_comms_BackBilling Bulk Release Update: outbound_billing_comms_BackBilling Bulk Release Update Outbound Billing Comms DY NT CIP620: Outbound Billing Comms DY NT CIP620 Outbound Meter Reading: Outbound Meter Reading Outbound Meter Reading Request-Dialer_TCS: Outbound Meter Reading Request-Dialer_TCS Outbound Meter Reading Request-Field_Calisen: Outbound Meter Reading Request-Field_Calisen Outbound Meter Reading Request-Field_MDS: Outbound Meter Reading Request-Field_MDS Outbound Meter Reading Request-SMS: Outbound Meter Reading Request-SMS Overdales DCA Placement: Overdales DCA Placement Overdales SAP Campaign: Overdales SAP Campaign Part Payment Initiative: Part Payment Initiative PAYG Debt Validated: PAYG Debt Validated PAYG payment holiday elec: PAYG payment holiday elec PAYG payment holiday gas: PAYG payment holiday gas PAYG/PPM Gas Summer: PAYG/PPM Gas Summer Payment Adequacy Exemption: Payment Adequacy Exemption PCAB Referral: PCAB Referral Pod Drive: Pod Drive Pod Drive - Declined: Pod Drive - Declined Pod Point Plug In Smart: Pod Point Plug In Smart Porting test DO NOT USE: Porting test DO NOT USE Post Lapse SVT: Post Lapse SVT Potential Exchange to 4G Comms Hub: Potential Exchange to 4G Comms Hub Potential Insolvency: Potential Insolvency Pozitive: Pozitive PP Compensation Review Customer: PP Compensation Review Customer PPM Debt Validated: PPM Debt Validated Pre Litigation: Pre Litigation Premier Foods Staff: Premier Foods Staff Previous Insolvency: Previous Insolvency Price Change Negative Advance Hold: Price Change Negative Advance Hold Price Change Notification Hold: Price Change Notification Hold Promo 100 August Renew: Promo 100 August Renew Promo 100 July Renew: Promo 100 July Renew Promo 100 June Renew: Promo 100 June Renew Promo 100 Nov Renewal: Promo 100 Nov Renewal Promo 100 Oct Renewal: Promo 100 Oct Renewal Promo 125 June Renew: Promo 125 June Renew Promo 125 Nov Renewal: Promo 125 Nov Renewal Promo 150 August Renew: Promo 150 August Renew Promo 150 July Renew: Promo 150 July Renew Promo 150 June Renew: Promo 150 June Renew Promo 150 Nov Renewal: Promo 150 Nov Renewal Promo 150 Oct Renewal: Promo 150 Oct Renewal Promo 175 June Renew: Promo 175 June Renew Promo 175 Nov Renewal: Promo 175 Nov Renewal Promo 200 August Renew: Promo 200 August Renew Promo 200 July Renew: Promo 200 July Renew Promo 200 June Renew: Promo 200 June Renew Promo 200 Nov Renewal: Promo 200 Nov Renewal Promo 25 Nov Renewal: Promo 25 Nov Renewal Promo 50 August Renew: Promo 50 August Renew Promo 50 July Renew: Promo 50 July Renew Promo 50 June Renew: Promo 50 June Renew Promo 50 Nov Renewal: Promo 50 Nov Renewal Promo 50 Oct Renewal: Promo 50 Oct Renewal Promo 50 SVT May26: Promo 50 SVT May26 Promo 75 June Renew: Promo 75 June Renew Promo 75 Nov Renewal: Promo 75 Nov Renewal Promo code app test: Promo code app test Promo HM 50 Home Move Retention: Promo HM 50 Home Move Retention PROMO TEST: PROMO TEST Promo test2 Grant: Promo test2 Grant Radio TeleSwitch (RTS) (Eligible): Radio TeleSwitch (RTS) (Eligible) Radio TeleSwitch (RTS) (ineligible): Radio TeleSwitch (RTS) (ineligible) Read required for settlement: Read required for settlement Refused Access - Appointment Letter: Refused Access - Appointment Letter Refused Access - CoR: Refused Access - CoR Refused Access - Obstructive: Refused Access - Obstructive Registered for Flextras: Registered for Flextras Renewal window: Renewal window Repayment AI chatbot: Repayment AI chatbot Resi Litigation: Resi Litigation ResQ staff: ResQ staff Rev Ops Tactical Intervention Engage DCA Placement: Rev Ops Tactical Intervention Engage DCA Placement Rev Ops Tactical Intervention over 20k debt loading: Rev Ops Tactical Intervention over 20k debt loading Rev Ops Tactical Intervention Overdales DCA Placement: Rev Ops Tactical Intervention Overdales DCA Placement Rev Ops Tactical Intervention Prelegal Fulmar: Rev Ops Tactical Intervention Prelegal Fulmar Rev Ops Tactical Intervention Prelegal Fulmar LTD Customer: Rev Ops Tactical Intervention Prelegal Fulmar LTD Customer Rev Ops Tactical Intervention Prelegal GLC: Rev Ops Tactical Intervention Prelegal GLC Rev Ops Tactical Intervention Prelegal Judge and Priestly 30 days: Rev Ops Tactical Intervention Prelegal Judge and Priestly 30 days Rev Ops Tactical Intervention Prelegal Judge and Priestly 60 days: Rev Ops Tactical Intervention Prelegal Judge and Priestly 60 days Rev Ops Tactical Intervention SB Resi End User Involuntary Payment Change: Rev Ops Tactical Intervention SB Resi End User Involuntary Payment Change Rev Ops Tactical Intervention Sonex High Affordability: Rev Ops Tactical Intervention Sonex High Affordability Rev Ops Tactical Intervention Sonex Low Affordability: Rev Ops Tactical Intervention Sonex Low Affordability Rev Ops Tactical Intervention Term to Live Campaign: Rev Ops Tactical Intervention Term to Live Campaign Rev Ops Tactical Intervention Warrant Progression: Rev Ops Tactical Intervention Warrant Progression RMG Staff: RMG Staff RMS SMS: RMS SMS RP Migration: RP Migration RP Migration Multiple: RP Migration Multiple RP Migration POROB: RP Migration POROB RTS Blanking plates: RTS Blanking plates RTS_Exotic Metering Site: RTS_Exotic Metering Site RTS myacc exclusions: RTS myacc exclusions RTS Site_ Cannot match current off peak times: RTS Site_ Cannot match current off peak times RTS Site_Exotic Metering: RTS Site_Exotic Metering RTS Site_Matched current off peak times: RTS Site_Matched current off peak times RTS Site_We can match current off peak times: RTS Site_We can match current off peak times RTS Site_We cannot match current off peak times: RTS Site_We cannot match current off peak times Safeguarding Product Eligibility: Safeguarding Product Eligibility Sanctioned customer: Sanctioned customer SB BB Debt Payment Required: SB BB Debt Payment Required SB Commercial Size Meter: SB Commercial Size Meter SB HH Opt outs: SB HH Opt outs SB High Value Renewals: SB High Value Renewals SB Large Capacity Meter Disconnection: SB Large Capacity Meter Disconnection SB Litigation: SB Litigation SB - No Room for Hot shoe: SB - No Room for Hot shoe SB_Online_Renewal: SB_Online_Renewal SB PAYG: SB PAYG SB Remote Disconnection: SB Remote Disconnection SB Warrant - DNO Required: SB Warrant - DNO Required SB Warrant - Locksmith or Shutter Engineer: SB Warrant - Locksmith or Shutter Engineer SB Warrant - Technical Meter Issues: SB Warrant - Technical Meter Issues September 2024 Renewal Exclusive: September 2024 Renewal Exclusive September 2024 Renewals Exclusive: September 2024 Renewals Exclusive September end date - price extension: September end date - price extension September renewal promo 150: September renewal promo 150 September renewal promo 50: September renewal promo 50 September Renew Test: September Renew Test Small Business Account Resi End User: Small Business Account Resi End User Small Business Vulnerability: Small Business Vulnerability Smart_Apology: Smart_Apology Smart Campaign Exclusion MMHS: Smart Campaign Exclusion MMHS SmartFlex Tester: SmartFlex Tester Smart Incentive: Smart Incentive Smart Incentive Q1: Smart Incentive Q1 SMETS Upgrade: SMETS Upgrade SMH Calisen Live: SMH Calisen Live SMH Calisen Other: SMH Calisen Other Solar Nil Bill Case Study: Solar Nil Bill Case Study Solar Shift V3: Solar Shift V3 Solar Shift V3 Send 2: Solar Shift V3 Send 2 Sold to Lowell: Sold to Lowell Sonex Energy Theft Investigation: Sonex Energy Theft Investigation Sonex Non Standard DD: Sonex Non Standard DD Sonex Placement: Sonex Placement Sonex Repayment Plan: Sonex Repayment Plan Stay Connected 24: Stay Connected 24 Sunday Saver Interest 2025: Sunday Saver Interest 2025 Sunday Saver Interest April 2025: Sunday Saver Interest April 2025 Sunday Saver Interest Capture: Sunday Saver Interest Capture sunday saver interest capture from september 25: sunday saver interest capture from september 25 Sunday Saver Interest for April 26: Sunday Saver Interest for April 26 Sunday Saver Interest for August 26: Sunday Saver Interest for August 26 Sunday Saver Interest for December: Sunday Saver Interest for December Sunday Saver Interest for February: Sunday Saver Interest for February Sunday Saver Interest for February 26: Sunday Saver Interest for February 26 Sunday Saver Interest for January: Sunday Saver Interest for January Sunday Saver Interest for July 26: Sunday Saver Interest for July 26 Sunday Saver Interest for June 26: Sunday Saver Interest for June 26 Sunday Saver Interest for March: Sunday Saver Interest for March Sunday Saver Interest for March 26: Sunday Saver Interest for March 26 Sunday Saver Interest for May 26: Sunday Saver Interest for May 26 Sunday Saver Interest for November: Sunday Saver Interest for November Sunday Saver Interest for October: Sunday Saver Interest for October Sunday Saver Interest from June 25: Sunday Saver Interest from June 25 Sunday Saver Interest June 2025: Sunday Saver Interest June 2025 Sunday Saver Interest May 2025: Sunday Saver Interest May 2025 Sunday Saver Interest Pause: Sunday Saver Interest Pause Tastecard Marketing Campaign - Staff: Tastecard Marketing Campaign - Staff Tell Jo: Tell Jo Temp DNC: Temp DNC Tesco Staff: Tesco Staff Test Campaign: Test Campaign Testing - Marketing: Testing - Marketing Testing - Marketing 2: Testing - Marketing 2 The Vulnerability Partnership Non Standard DD: The Vulnerability Partnership Non Standard DD The Vulnerability Partnership Placement: The Vulnerability Partnership Placement The Vulnerability Partnership Repayment Plan: The Vulnerability Partnership Repayment Plan Traditional Half Hourly Meter: Traditional Half Hourly Meter Twin Element Meter Installed: Twin Element Meter Installed Unhealthy Smart meter - exchange required: Unhealthy Smart meter - exchange required United Utilities Staff: United Utilities Staff Utilita Migrated Customer: Utilita Migrated Customer VM02 switch off: VM02 switch off Vodafone staff: Vodafone staff VWAN: VWAN Warm Home Discount NR 2026: Warm Home Discount NR 2026 WHD Broader Group: WHD Broader Group WHD Core Group 1: WHD Core Group 1 WHD Core Group 2: WHD Core Group 2 WHD - Non redeemer - Cheques: WHD - Non redeemer - Cheques WHD - Non redeemer - Prepay Voucher: WHD - Non redeemer - Prepay Voucher Whitbread Staff: Whitbread Staff Winddown Campaign: Winddown Campaign Write-off: Write-off Write-off - Deceased: Write-off - Deceased Write-off - Historic SAP Term Debt: Write-off - Historic SAP Term Debt Write off - Small Business: Write off - Small Business Write off - Term DCA Settlement Agreed: Write off - Term DCA Settlement Agreed WRR IE Received: WRR IE Received WW Bundles: WW Bundles WW Choices: WW Choices WW FAPs: WW FAPs '': '' None: None deprecated: true x-use-instead: slug campaign_note: type: string nullable: true default: '' description:

This will create an account note, and will link to it from the account campaign.

expiry_date: type: string format: date nullable: true description:

The end date after which the account will no longer be associated with this campaign.

slug: enum: - 2g3g_ch_north - abusivecustomer - administration_in_place - administrative_receiverships_in_place - aged_gas_meter_campaign - amr - amr_campaign - amr_mlv - apologydnc - appointment_cancellation - approved_rp_exception - promo_75_april_renewal_incentive - april_renewals_tariff - arudd_effected_accounts - asc_campaign - promo_50_aug_high_clv - promo_50_aug_1time_renew - back_office_only_swhdr - balance_in_dispute - bankruptcy_in_place - bb_debt_payment_required - bdc_norebook - bill_explainer_customer - bill_vat - breathing-space - broker_contract - broker_no_dd - bupa_staff - calisen_smart_meter_health_site_visit - campaign_test - ca_plymouth_engaged - carer - charis_referral - children_under_2 - complaint_bill_hold - complex_non_psr - complex_psr - cos_auto_objection_removal - customer_support_fund_application_received - customer_support_fund_engaged - cva_in_place - cypl_campaign_test - dd_ob_initiative - dd_refund_campaign - debt_365 - debt_arrangement_scheme_active - debt_management_plan_active - debt_payment_required - deemedcampaign1 - deemedcampaign2 - dissolved_company - dm_debt_payment_required - dmp_rejected - dnc_dm_debt_payment_required_bo_only - dro_in_place - drs_eligible_debt - drs_phase_1_applied - drs_phase_1_eligible - drs_phase_1_qualified - ds_exclusion - e7_low_night_legacy - e7_low_night_smart_v2 - eco4_debt - economy_9_exceptions - economy_9_fixed - economy_9_migration_pot - economy_9_migrations - ehh_data_pending - elec_dmex_applied - elective_hhs_eligible - elective_hhs_freephase - elective_hhs_podpoint - elective_hhs_smart_charge_bolt-on - electricity_recertification - engage_employee_tariff - promoev_50_retention - evri_partnership - ev_tariffs - extend_excl_sep26 - extend_excl_sep26v2 - extend_excl_sep26v3 - extend_offer_jul25 - extension_offer_jul25_a - extend_offer_jul25v2 - extension_offer_jul25v2_a - extend_offer_jul25v3 - extension_offer_jul25v3_a - extend_offer_jun25 - extension_offer_jun25_a - extend_offer_jun25v2 - extension_offer_jun25v2_a - field_debt_hold_addressissues - field-debt-hold-address-mismatch - field-debt-hold-bankruptcies-dro-iva - field_debt_hold_commercial_size_meter - field-debt-hold-crossed-metering - field-debt-hold-demolished - field-debt-hold-disconnected - field-debt-hold-dissolved-liquidation-administration - field_debt_hold_dno - field_debt_hold_legal - field_debt_hold_locksmith_or_shutter_engineer - field_debt_hold_meter_details_incorrect - field_debt_hold_no_room_for_hot_shoe - health_and_safety_officer_assault - field_debt_hold_payg_not_safe_and_reasonably_practicable - field_debt_hold_res_pend_dem - field_debt_hold_potential_officer_risk - field_debt_hold_res_ll_supply - field_debt_hold_res_mp - field_debt_hold_technical_meter_issues - field_debt_hold_unable_to_access_meter - field-debt-hold-unable-to-locate-address - field-debt-hold-unable-to-locate-meter - field_debt_hold_unsafe_premise - field_meter_read_visit_outcome_access_refused - field_meter_read_visit_outcome_access_refused_appointment_required - field_meter_read_visit_outcome_access_refused_password_required_for_access - field_meter_read_visit_outcome_cancelled - field_meter_read_visit_outcome_demolished - field_meter_read_visit_outcome_insufficient_address - field_meter_read_visit_outcome_insufficient_address_incorrect_postcode - field_meter_read_visit_outcome_insufficient_address_missing_business_name - field_meter_read_visit_outcome_insufficient_address_missing_house_name_or_no - field_meter_read_visit_outcome_insufficient_address_missing_street_name - field_meter_read_visit_outcome_insufficient_address_missing_town - field_meter_read_visit_outcome_meter_blocked - field_meter_read_visit_outcome_meter_de_energised - field_meter_read_visit_outcome_meter_faulty - field_meter_read_visit_outcome_meter_perm_blocked - field_meter_read_visit_outcome_meter_temp_blocked - field_meter_read_visit_outcome_meter_temp_blocked_key_or_code_required - field_meter_read_visit_outcome_no_access_keycode_unavailable - field_meter_read_visit_outcome_read_received - field_meter_read_visit_outcome_unsafe_premises - field_meter_read_visit_outcome_vacant - final_bill_issued - final_rts - financial-vulnerability - fixed-billing-pathway-test - fme - fm_grc - fmi - fm_rebook_no_action_required - fmtica - fmtiedfa - fmtiea - fmtii - interest_capture_world_cup - former_opus_customer - fraud_risk_read_pinned_note - fuel_direct - fuel_direct_arrears_only - gas_amr - gas_dmex_applied - general_hazard - promo_20_grant_test - promo_25_gltest - promo_25_grantlee_testv2 - promoev_10_grant_test - promo_25_grantspromotest - green_deal - gsop3_ihd_only - gsop3_smart_meter_and_ihd - gsop3_smart_meter_only - gsop4_dcc_mitigation - gsop4_external_partner_mitigation - hazard_identified - heaters_for_rts_psr_customers - heatwave_relief_pack_requested - high_affordability - high_value_debt_validation - incomemax_engaged - incomemax_referral - ia - involuntarily_payg_mode_change - iva_in_place - ivr_solar_promotion - jan26_early_renew - jul26_renewal_exclusive - jul26_renewal_exclusive_payg - jun26_renew_exclusive - large-gas-customer - lgos - lasting_power_of_attorney - legacy_rp_migration_exception - life-support - liquidation_in_place - live_aged_debt_write_off - living-alone - low_standing_charge_trial - manual_pa_complete - march_renewals - promo_100_may_renew - promo_125_may_renew - promo_150_may_renew - promo_175_may_renew - promo_200_may_renew - promo_50_may_renew - promo_75_may_renew - promo_75_may_renewal - may_renewals_tariff - mental-health-crisis - meighter_at_height_id - meter_blocked - meter_recertification_needed - meter_safely_accessible - mhhs_in_progress - migrated_term_debt - migrated_term_written-off_debt - migration_bill-hold - migration_dd_tariff - missing_comms_hub_guid_required - missing_meter_and_chf_guid - mpaas_smh - mpaas_smh_dual_fuel - mpaas_smh_electric - mpaas_smh_gas - medium_pressure_gas - naa - nissan_staff - nkc_lkc_emails - promo_100_oct_1time_renew - promo_150_oct_1time_renew - promo_50_oct_2time_renew - official_complaint - opus_change_ddi_date - opus_disputed_balance - opus_litigation - opus_migration_read_dispute - opus_pending_cot - oriel_placement - outbound_billing_comms_backbilling_bulk_release_update - outbound_billing_comms_dy_nt_cip620 - outbound_meter_reading - outbound_meter_reading_request-dialer_tcs - outbound_meter_reading_request-field_calisen - outbound_meter_reading_request-field_mds - outbound_meter_reading_request-sms - overdales_dca_placement - overdales_sap_campaign - part_payment_iniative - payg_debt_validated - payg_payment_holiday_elec - payg_payment_holiday_gas - gas_summer_campaign - payment-adequacy-exemption - pcab_referral - pod_drive - pod_drive_declined - pod_point_plug_in_smart - porting_test_do_not_use - post_lapse_svt - potential_exchange_to_4g_comms_hub - potential_insolvency - pozitive - pp-comp-review-cust - ppm_debt_validated - pre_litigation - premier_foods_staff - previous_insolvency - price_change_negative_advance_hold - price_change_notification_hold - promo_100_august_renew - promo_100_july_renew - promo_100_june_renew - promo_100_nov_renew - promo_100_oct_renew - promo_125_june_renew - promo_125_nov_renew - promo_150_august_renew - promo_150_july_renew - promo_150_june_renew - promo_150_nov_renew - promo_150_oct_renew - promo_175_june_renew - promo_175_nov_renew - promo_200_august_renew - promo_200_july_renew - promo_200_june_renew - promo_200_nov_renew - promo_25_nov_renew - promo_50_august_renew - promo_50_july_renew - promo_50_june_renew - promo_50_nov_renew - promo_50_oct_renew - promo_50_svt_may26 - promo_75_june_renew - promo_75_nov_renew - promo_25_app_test - promohm_50_home_move_retention - promo_10_test_tomt - promo_25_test2_grant - rts_meter_exchange_needed - radio_teleswitch_site - readrequiredforsettlement - refused_access - refused_access_cor - ra-obstructive - flextras_customer - renewal_window - repayment_ai_chatbot - resi_litigation - resq_staff - rev_ops_tactical_intervention_engage_dca_placement - rev_ops_tactical_intervention_over_20k_debt_loading - rev_ops_tactical_intervention_overdales_dca_placement - rev_ops_tactical_intervention_prelegal_fulmar - rev_ops_tactical_intervention_prelegal_fulmar_ltd_customer - rev_ops_tactical_intervention_prelegal_glc - rev_ops_tactical_intervention_prelegal_judge_and_priestly_30_days - rev_ops_tactical_intervention_prelegal_judge_and_priestly_60_days - rev_ops_tactical_intervention_sb_resi_end_user_involuntary_payment_change - rev_ops_tactical_intervention_sonex_high_affordability - rev_ops_tactical_intervention_sonex_low_affordability - rev_ops_tactical_intervention_term_to_live_campaign - rev_ops_tactical_intervention_warrant_progression - rmg_staff - rms_sms - rp_migration - rp_migration_multiple - rp_migration_porob - blanking_plate_needed - rts_exotic_metering_site - rts_myacc_exclusions - rts_site_cannot_match_current_off_peak_times - rts_site_exotic_metering - rts_site_matched_current_off_peak_times - rts_site_we_can_match_current_off_peak_times - rts_site_we_cannot_match_current_off_peak_times - safeguard_eligible - sanctioned_customer - sb_bb_debt_payment_required - sb_commerical_size_meter - sb_hh_opt_out - sb_high_value_renewals - sb_large_capacity_meter_disconnection - sb_litigation - sb_no_room_for_hot_shoe - sb_online_renewal - sb_payg - sb_remote_disconnection - sb_warrant_dno_required - sb_warrant_locksmith_or_shutter_engineer - sb_warrant_technical_meter_issues - sep24_renew_excl - sept_2024_renew_excl - september_end_date_price_extension - promo_150_sep_1time_renew - promo_50_sep_1time_renew - sep_renew_test - small_business_account_resi_end_user - sb_vulnerability - smart_apology - smart_campaign_exclusion_mmhs - smartflex_tester - smart_incentive - smart_incentive_q1 - smets_upgrade - smh_calisen_live - smh_calisen_other - solar_nb_cs - solar_shift_v3_email - solar_shift_v3_email2 - sold_to_lowell - sonex_energy_theft_investigation - sonex_non_standard_dd - sonex_placement - sonex_repayment_plan - stay_connected_24 - sunday_saver_interest_capture_25 - sunday_saver_interest_capture_april_25 - sunday_saver_interest_capture - sunday_saver_interest_capture_from_september25 - sunday_saver_interest_capture_from_april26 - sunday_saver_interest_capture_from_august26 - sunday_saver_interest_capture_from_december25 - sunday_saver_interest_capture_from_febraury26 - sunday_saver_interest_capture_from_february26 - sunday_saver_interest_capture_from_january26 - sunday_saver_interest_capture_from_july26 - sunday_saver_interest_capture_from_june26 - sunday_saver_interest_capture_from_march_26 - sunday_saver_interest_capture_from_march26 - sunday_saver_interest_capture_from_may26 - sunday_saver_interest_capture_from_november25 - sunday_saver_interest_capture_from_october25 - sunday_saver_interest_capture_from_june25 - sunday_saver_interest_capture_june_25 - sunday_saver_interest_capture_may_25 - sunday_saver_interest_capture_pause_25 - tastecard_staff_campaign - tell_jo - tempdnc - tesco_staff - promo_10_test_campaign - testing_marketing - testing_marketing_2 - tvp_non_standard_dd - tvp_placement - tvp_repayment_plan - traditional_half_hourly_meter - twin_element_meter_installed - unhealthy_smart_meter_exchange_required - united_utilities_staff - utilita-migrated-customer - vm02_switch_off - vodaphone_staff - vwan - whd_nr_2026 - whd_broader_group - whd_core_grp_1 - whd_core_grp_2 - whd_nr_cheque - warm_home_discount_prepay_voucher_non_redeemer - whitbread_staff - winddown_campaign - write_off - write_off_deceased - write_off_historic_sap_term_debt - write_off_small_business - write_off_term_dca_settlement_agreed - wrr_ie_received - ww_bundles - ww_choices - ww_faps - '' - null type: string x-spec-enum-id: 8e895b0bc1aaa17f nullable: true default: '' description:

The slug that identifies a campaign. Campaigns must already exist in Kraken.

x-enum-descriptions: 2g3g_ch_north: 2G/3G CH North abusivecustomer: Abusive Customer administration_in_place: Administration In Place administrative_receiverships_in_place: Administrative Receiverships in Place aged_gas_meter_campaign: Aged Gas Meter Campaign amr: AMR amr_campaign: AMR Campaign amr_mlv: AMR - MLV apologydnc: Apology DNC appointment_cancellation: Appointment Cancellation approved_rp_exception: Approved RP Exception promo_75_april_renewal_incentive: April Renewal 75 Incentive april_renewals_tariff: April Renewals Tariff arudd_effected_accounts: ARUDD Effected Accounts asc_campaign: ASC Campaign promo_50_aug_high_clv: August renewal high value promo_50_aug_1time_renew: August renewal promo 50 back_office_only_swhdr: 'Back Office Only: SWHDR' balance_in_dispute: Balance in dispute bankruptcy_in_place: Bankruptcy In Place bb_debt_payment_required: BB Debt Payment Required bdc_norebook: BDC_NoRebook bill_explainer_customer: Bill Explainer Customer bill_vat: Bill VAT breathing-space: Breathing Space broker_contract: Broker Contract broker_no_dd: Broker_no_dd bupa_staff: Bupa Staff calisen_smart_meter_health_site_visit: Calisen Smart Meter Health Site Visit campaign_test: CAMPAIGN TEST ca_plymouth_engaged: CA_PLYMOUTH_ENGAGED carer: Carer charis_referral: Charis referral children_under_2: Children Under 2 complaint_bill_hold: Complaint Bill-Hold complex_non_psr: Complex Non-PSR complex_psr: Complex PSR cos_auto_objection_removal: Cos auto objection removal customer_support_fund_application_received: Customer Support Fund Application Received customer_support_fund_engaged: CUSTOMER_SUPPORT_FUND_ENGAGED cva_in_place: CVA in Place cypl_campaign_test: CYPL Campaign Test dd_ob_initiative: DD OB Initiative dd_refund_campaign: DD Refund Campaign debt_365: Debt 365 debt_arrangement_scheme_active: DEBT_ARRANGEMENT_SCHEME_ACTIVE debt_management_plan_active: DEBT_MANAGEMENT_PLAN_ACTIVE debt_payment_required: Debt Payment Required deemedcampaign1: DeemedCampaign1 deemedcampaign2: DeemedCampaign2 dissolved_company: Dissolved Company dm_debt_payment_required: DM Debt Payment Required dmp_rejected: DMP Rejected dnc_dm_debt_payment_required_bo_only: DNC DM Debt Payment Required BO only dro_in_place: DRO In Place drs_eligible_debt: DRS Eligible Debt drs_phase_1_applied: DRS Phase 1 Applied drs_phase_1_eligible: DRS Phase 1 Eligible drs_phase_1_qualified: DRS Phase 1 Qualified ds_exclusion: DS Exclusion e7_low_night_legacy: E7 Low Night Usage Legacy e7_low_night_smart_v2: E7 Low Night Usage Smart v2 eco4_debt: ECO4 Debt Campaign economy_9_exceptions: Economy 9 Exceptions economy_9_fixed: Economy 9 Fixed economy_9_migration_pot: Economy 9 Migration Pot economy_9_migrations: Economy 9 Migrations ehh_data_pending: EHH data pending elec_dmex_applied: ELEC DMEX Applied elective_hhs_eligible: Elective HHS Eligible elective_hhs_freephase: Elective HHS FreePhase elective_hhs_podpoint: Elective HHS PodPoint elective_hhs_smart_charge_bolt-on: Elective HHS Smart Charge Bolt-On electricity_recertification: Electricity Recertification engage_employee_tariff: Engage Employee Tariff promoev_50_retention: EV Promo Code Retention evri_partnership: EVRI partnership ev_tariffs: EV Tariffs extend_excl_sep26: Extend Excl Sep26 extend_excl_sep26v2: Extend Excl Sep26v2 extend_excl_sep26v3: Extend Excl Sep26v3 extend_offer_jul25: Extension offer jul25 extension_offer_jul25_a: Extension offer jul25_ extend_offer_jul25v2: Extension offer jul25v2 extension_offer_jul25v2_a: Extension offer jul25v2_ extend_offer_jul25v3: Extension offer jul25v3 extension_offer_jul25v3_a: Extension offer jul25v3_ extend_offer_jun25: Extension offer jun25 extension_offer_jun25_a: Extension offer jun25_ extend_offer_jun25v2: Extension offer jun25v2 extension_offer_jun25v2_a: Extension offer jun25v2_ field_debt_hold_addressissues: Field Debt Hold - Address Issues field-debt-hold-address-mismatch: Field Debt Hold - Address Mismatch field-debt-hold-bankruptcies-dro-iva: Field Debt Hold - Bankruptcy/DRO/IVA field_debt_hold_commercial_size_meter: Field Debt Hold - Commercial Size Meter field-debt-hold-crossed-metering: Field Debt Hold - Crossed Metering field-debt-hold-demolished: Field Debt Hold - Demolished field-debt-hold-disconnected: Field Debt Hold - Disconnected Meter field-debt-hold-dissolved-liquidation-administration: Field Debt Hold - Dissolved/Liquidated/Administration field_debt_hold_dno: Field Debt Hold - DNO field_debt_hold_legal: Field Debt Hold - Legal field_debt_hold_locksmith_or_shutter_engineer: Field Debt Hold - Locksmith or Shutter Engineer field_debt_hold_meter_details_incorrect: Field Debt Hold - Meter Details Incorrect field_debt_hold_no_room_for_hot_shoe: Field Debt Hold - No Room for Hot shoe health_and_safety_officer_assault: Field Debt Hold Officer Assaulted field_debt_hold_payg_not_safe_and_reasonably_practicable: Field Debt Hold - PAYG Not safe and reasonably practicable field_debt_hold_res_pend_dem: Field Debt Hold - Pending Demolition field_debt_hold_potential_officer_risk: Field Debt Hold - Potential Officer Risk field_debt_hold_res_ll_supply: Field Debt Hold - Residential Landlords Supply field_debt_hold_res_mp: Field Debt Hold - Residential Manual Placement field_debt_hold_technical_meter_issues: Field Debt Hold - Technical Meter Issues field_debt_hold_unable_to_access_meter: Field Debt Hold - Unable to access Meter field-debt-hold-unable-to-locate-address: Field Debt Hold - Unable To Locate Address field-debt-hold-unable-to-locate-meter: Field Debt Hold - Unable To Locate Meter field_debt_hold_unsafe_premise: Field Debt Hold - Unsafe Premise field_meter_read_visit_outcome_access_refused: Field Meter Read Visit Outcome_Access Refused field_meter_read_visit_outcome_access_refused_appointment_required: Field Meter Read Visit Outcome_Access Refused_Appointment Required field_meter_read_visit_outcome_access_refused_password_required_for_access: Field Meter Read Visit Outcome_Access Refused_Password Required for Access field_meter_read_visit_outcome_cancelled: Field Meter Read Visit Outcome_Cancelled field_meter_read_visit_outcome_demolished: Field Meter Read Visit Outcome_Demolished field_meter_read_visit_outcome_insufficient_address: Field Meter Read Visit Outcome_Insufficient Address field_meter_read_visit_outcome_insufficient_address_incorrect_postcode: Field Meter Read Visit Outcome_Insufficient Address_Incorrect Postcode field_meter_read_visit_outcome_insufficient_address_missing_business_name: Field Meter Read Visit Outcome_Insufficient Address_Missing Business Name field_meter_read_visit_outcome_insufficient_address_missing_house_name_or_no: Field Meter Read Visit Outcome_Insufficient Address_Missing House Name or No field_meter_read_visit_outcome_insufficient_address_missing_street_name: Field Meter Read Visit Outcome_Insufficient Address_Missing Street Name field_meter_read_visit_outcome_insufficient_address_missing_town: Field Meter Read Visit Outcome_Insufficient Address_Missing Town field_meter_read_visit_outcome_meter_blocked: Field Meter Read Visit Outcome_Meter Blocked field_meter_read_visit_outcome_meter_de_energised: Field Meter Read Visit Outcome_Meter De_Energised field_meter_read_visit_outcome_meter_faulty: Field Meter Read Visit Outcome_Meter Faulty field_meter_read_visit_outcome_meter_perm_blocked: Field Meter Read Visit Outcome_Meter Perm Blocked field_meter_read_visit_outcome_meter_temp_blocked: Field Meter Read Visit Outcome_Meter Temp Blocked field_meter_read_visit_outcome_meter_temp_blocked_key_or_code_required: Field Meter Read Visit Outcome_Meter Temp Blocked_Key or Code Required field_meter_read_visit_outcome_no_access_keycode_unavailable: Field Meter Read Visit Outcome_No Access_KeyCode Unavailable field_meter_read_visit_outcome_read_received: Field Meter Read Visit Outcome_Read Received field_meter_read_visit_outcome_unsafe_premises: Field Meter Read Visit Outcome_Unsafe Premises field_meter_read_visit_outcome_vacant: Field Meter Read Visit Outcome_Vacant final_bill_issued: FINAL_BILL_ISSUED final_rts: Final RTS financial-vulnerability: Financial Vulnerability fixed-billing-pathway-test: Fixed billing pathway test fme: FM eligible fm_grc: FM Generic Rebook Comms fmi: FM Ineligible fm_rebook_no_action_required: FM - Rebook no action required fmtica: FM Temp ineligible – customer action fmtiedfa: FM Temp ineligible - EDF action fmtiea: FM Temp ineligible - external action fmtii: FM Temp ineligible – investigate interest_capture_world_cup: Football Free Event Interest Capture former_opus_customer: former OPUS customer fraud_risk_read_pinned_note: FRAUD RISK read pinned note fuel_direct: Fuel Direct fuel_direct_arrears_only: Fuel Direct arrears only gas_amr: GAS AMR gas_dmex_applied: GAS DMEX Applied general_hazard: General Hazard promo_20_grant_test: Grant Lee Test promo_25_gltest: GrantLeeTEST promo_25_grantlee_testv2: Grant Lee Test v2 promoev_10_grant_test: grants ev test promo_25_grantspromotest: Grantspromotest green_deal: Green Deal gsop3_ihd_only: GSOP3 IHD Only gsop3_smart_meter_and_ihd: GSOP3 Smart Meter and IHD gsop3_smart_meter_only: GSOP3 Smart Meter Only gsop4_dcc_mitigation: GSOP4 DCC Mitigation gsop4_external_partner_mitigation: GSOP4 External Partner Mitigation hazard_identified: Hazard_Identified heaters_for_rts_psr_customers: Heaters for RTS PSR Customers heatwave_relief_pack_requested: Heatwave Relief Pack - Requested high_affordability: High Affordability high_value_debt_validation: High Value Debt Validation incomemax_engaged: INCOMEMAX_ENGAGED incomemax_referral: IncomeMax Referral ia: Insufficient Address involuntarily_payg_mode_change: Involuntary PAYG Mode Change iva_in_place: IVA IN PLACE ivr_solar_promotion: IVR Solar Promotion jan26_early_renew: Jan26 Early Renewal jul26_renewal_exclusive: Jul26 Renewal Exclusive jul26_renewal_exclusive_payg: Jul26 Renewal Exclusive PAYG jun26_renew_exclusive: June26 Renewal Exclusive large-gas-customer: Large Gas Customer lgos: Large Gas on Site lasting_power_of_attorney: Lasting Power Of Attorney legacy_rp_migration_exception: Legacy RP Migration Exception life-support: Life Support liquidation_in_place: Liquidation in Place live_aged_debt_write_off: Live Aged Debt Write-off living-alone: Living Alone low_standing_charge_trial: Low Standing Charge Trial manual_pa_complete: Manual Payment Adequacy Complete march_renewals: March Renewals promo_100_may_renew: May renew 100 promo_125_may_renew: May renew 125 promo_150_may_renew: May renew 150 promo_175_may_renew: May renew 175 promo_200_may_renew: May renew 200 promo_50_may_renew: May renew 50 promo_75_may_renew: May renew 75 promo_75_may_renewal: May Renewal Promotion 75 may_renewals_tariff: May Renewals Tariff mental-health-crisis: Mental Health Crisis meighter_at_height_id: Meter At Height Identified meter_blocked: Meter Blocked meter_recertification_needed: Meter Recertification Needed meter_safely_accessible: Meter Safely Accessible mhhs_in_progress: MHHS in Progress migrated_term_debt: Migrated Term Debt migrated_term_written-off_debt: Migrated Term Written-Off Debt migration_bill-hold: Migration Bill-Hold migration_dd_tariff: Migration DD Tariff missing_comms_hub_guid_required: Missing Comms Hub GUID - Request from customer missing_meter_and_chf_guid: Missing Meter and CHF GUID - Request both from customer mpaas_smh: MPAAS SMH mpaas_smh_dual_fuel: MPAAS SMH Dual Fuel mpaas_smh_electric: MPAAS SMH Electric mpaas_smh_gas: MPAAS SMH Gas medium_pressure_gas: MPG naa: NAA nissan_staff: Nissan Staff nkc_lkc_emails: NKC/LKC emails promo_100_oct_1time_renew: October renewal promo 100 promo_150_oct_1time_renew: October renewal promo 150 promo_50_oct_2time_renew: October renewal promo 50 official_complaint: Official Complaint opus_change_ddi_date: Opus Change DDI Date opus_disputed_balance: Opus disputed balance opus_litigation: OPUS Litigation opus_migration_read_dispute: Opus Migration Read Dispute opus_pending_cot: Opus Pending COT oriel_placement: Oriel Placement outbound_billing_comms_backbilling_bulk_release_update: outbound_billing_comms_BackBilling Bulk Release Update outbound_billing_comms_dy_nt_cip620: Outbound Billing Comms DY NT CIP620 outbound_meter_reading: Outbound Meter Reading outbound_meter_reading_request-dialer_tcs: Outbound Meter Reading Request-Dialer_TCS outbound_meter_reading_request-field_calisen: Outbound Meter Reading Request-Field_Calisen outbound_meter_reading_request-field_mds: Outbound Meter Reading Request-Field_MDS outbound_meter_reading_request-sms: Outbound Meter Reading Request-SMS overdales_dca_placement: Overdales DCA Placement overdales_sap_campaign: Overdales SAP Campaign part_payment_iniative: Part Payment Initiative payg_debt_validated: PAYG Debt Validated payg_payment_holiday_elec: PAYG payment holiday elec payg_payment_holiday_gas: PAYG payment holiday gas gas_summer_campaign: PAYG/PPM Gas Summer payment-adequacy-exemption: Payment Adequacy Exemption pcab_referral: PCAB Referral pod_drive: Pod Drive pod_drive_declined: Pod Drive - Declined pod_point_plug_in_smart: Pod Point Plug In Smart porting_test_do_not_use: Porting test DO NOT USE post_lapse_svt: Post Lapse SVT potential_exchange_to_4g_comms_hub: Potential Exchange to 4G Comms Hub potential_insolvency: Potential Insolvency pozitive: Pozitive pp-comp-review-cust: PP Compensation Review Customer ppm_debt_validated: PPM Debt Validated pre_litigation: Pre Litigation premier_foods_staff: Premier Foods Staff previous_insolvency: Previous Insolvency price_change_negative_advance_hold: Price Change Negative Advance Hold price_change_notification_hold: Price Change Notification Hold promo_100_august_renew: Promo 100 August Renew promo_100_july_renew: Promo 100 July Renew promo_100_june_renew: Promo 100 June Renew promo_100_nov_renew: Promo 100 Nov Renewal promo_100_oct_renew: Promo 100 Oct Renewal promo_125_june_renew: Promo 125 June Renew promo_125_nov_renew: Promo 125 Nov Renewal promo_150_august_renew: Promo 150 August Renew promo_150_july_renew: Promo 150 July Renew promo_150_june_renew: Promo 150 June Renew promo_150_nov_renew: Promo 150 Nov Renewal promo_150_oct_renew: Promo 150 Oct Renewal promo_175_june_renew: Promo 175 June Renew promo_175_nov_renew: Promo 175 Nov Renewal promo_200_august_renew: Promo 200 August Renew promo_200_july_renew: Promo 200 July Renew promo_200_june_renew: Promo 200 June Renew promo_200_nov_renew: Promo 200 Nov Renewal promo_25_nov_renew: Promo 25 Nov Renewal promo_50_august_renew: Promo 50 August Renew promo_50_july_renew: Promo 50 July Renew promo_50_june_renew: Promo 50 June Renew promo_50_nov_renew: Promo 50 Nov Renewal promo_50_oct_renew: Promo 50 Oct Renewal promo_50_svt_may26: Promo 50 SVT May26 promo_75_june_renew: Promo 75 June Renew promo_75_nov_renew: Promo 75 Nov Renewal promo_25_app_test: Promo code app test promohm_50_home_move_retention: Promo HM 50 Home Move Retention promo_10_test_tomt: PROMO TEST promo_25_test2_grant: Promo test2 Grant rts_meter_exchange_needed: Radio TeleSwitch (RTS) (Eligible) radio_teleswitch_site: Radio TeleSwitch (RTS) (ineligible) readrequiredforsettlement: Read required for settlement refused_access: Refused Access - Appointment Letter refused_access_cor: Refused Access - CoR ra-obstructive: Refused Access - Obstructive flextras_customer: Registered for Flextras renewal_window: Renewal window repayment_ai_chatbot: Repayment AI chatbot resi_litigation: Resi Litigation resq_staff: ResQ staff rev_ops_tactical_intervention_engage_dca_placement: Rev Ops Tactical Intervention Engage DCA Placement rev_ops_tactical_intervention_over_20k_debt_loading: Rev Ops Tactical Intervention over 20k debt loading rev_ops_tactical_intervention_overdales_dca_placement: Rev Ops Tactical Intervention Overdales DCA Placement rev_ops_tactical_intervention_prelegal_fulmar: Rev Ops Tactical Intervention Prelegal Fulmar rev_ops_tactical_intervention_prelegal_fulmar_ltd_customer: Rev Ops Tactical Intervention Prelegal Fulmar LTD Customer rev_ops_tactical_intervention_prelegal_glc: Rev Ops Tactical Intervention Prelegal GLC rev_ops_tactical_intervention_prelegal_judge_and_priestly_30_days: Rev Ops Tactical Intervention Prelegal Judge and Priestly 30 days rev_ops_tactical_intervention_prelegal_judge_and_priestly_60_days: Rev Ops Tactical Intervention Prelegal Judge and Priestly 60 days rev_ops_tactical_intervention_sb_resi_end_user_involuntary_payment_change: Rev Ops Tactical Intervention SB Resi End User Involuntary Payment Change rev_ops_tactical_intervention_sonex_high_affordability: Rev Ops Tactical Intervention Sonex High Affordability rev_ops_tactical_intervention_sonex_low_affordability: Rev Ops Tactical Intervention Sonex Low Affordability rev_ops_tactical_intervention_term_to_live_campaign: Rev Ops Tactical Intervention Term to Live Campaign rev_ops_tactical_intervention_warrant_progression: Rev Ops Tactical Intervention Warrant Progression rmg_staff: RMG Staff rms_sms: RMS SMS rp_migration: RP Migration rp_migration_multiple: RP Migration Multiple rp_migration_porob: RP Migration POROB blanking_plate_needed: RTS Blanking plates rts_exotic_metering_site: RTS_Exotic Metering Site rts_myacc_exclusions: RTS myacc exclusions rts_site_cannot_match_current_off_peak_times: RTS Site_ Cannot match current off peak times rts_site_exotic_metering: RTS Site_Exotic Metering rts_site_matched_current_off_peak_times: RTS Site_Matched current off peak times rts_site_we_can_match_current_off_peak_times: RTS Site_We can match current off peak times rts_site_we_cannot_match_current_off_peak_times: RTS Site_We cannot match current off peak times safeguard_eligible: Safeguarding Product Eligibility sanctioned_customer: Sanctioned customer sb_bb_debt_payment_required: SB BB Debt Payment Required sb_commerical_size_meter: SB Commercial Size Meter sb_hh_opt_out: SB HH Opt outs sb_high_value_renewals: SB High Value Renewals sb_large_capacity_meter_disconnection: SB Large Capacity Meter Disconnection sb_litigation: SB Litigation sb_no_room_for_hot_shoe: SB - No Room for Hot shoe sb_online_renewal: SB_Online_Renewal sb_payg: SB PAYG sb_remote_disconnection: SB Remote Disconnection sb_warrant_dno_required: SB Warrant - DNO Required sb_warrant_locksmith_or_shutter_engineer: SB Warrant - Locksmith or Shutter Engineer sb_warrant_technical_meter_issues: SB Warrant - Technical Meter Issues sep24_renew_excl: September 2024 Renewal Exclusive sept_2024_renew_excl: September 2024 Renewals Exclusive september_end_date_price_extension: September end date - price extension promo_150_sep_1time_renew: September renewal promo 150 promo_50_sep_1time_renew: September renewal promo 50 sep_renew_test: September Renew Test small_business_account_resi_end_user: Small Business Account Resi End User sb_vulnerability: Small Business Vulnerability smart_apology: Smart_Apology smart_campaign_exclusion_mmhs: Smart Campaign Exclusion MMHS smartflex_tester: SmartFlex Tester smart_incentive: Smart Incentive smart_incentive_q1: Smart Incentive Q1 smets_upgrade: SMETS Upgrade smh_calisen_live: SMH Calisen Live smh_calisen_other: SMH Calisen Other solar_nb_cs: Solar Nil Bill Case Study solar_shift_v3_email: Solar Shift V3 solar_shift_v3_email2: Solar Shift V3 Send 2 sold_to_lowell: Sold to Lowell sonex_energy_theft_investigation: Sonex Energy Theft Investigation sonex_non_standard_dd: Sonex Non Standard DD sonex_placement: Sonex Placement sonex_repayment_plan: Sonex Repayment Plan stay_connected_24: Stay Connected 24 sunday_saver_interest_capture_25: Sunday Saver Interest 2025 sunday_saver_interest_capture_april_25: Sunday Saver Interest April 2025 sunday_saver_interest_capture: Sunday Saver Interest Capture sunday_saver_interest_capture_from_september25: sunday saver interest capture from september 25 sunday_saver_interest_capture_from_april26: Sunday Saver Interest for April 26 sunday_saver_interest_capture_from_august26: Sunday Saver Interest for August 26 sunday_saver_interest_capture_from_december25: Sunday Saver Interest for December sunday_saver_interest_capture_from_febraury26: Sunday Saver Interest for February sunday_saver_interest_capture_from_february26: Sunday Saver Interest for February 26 sunday_saver_interest_capture_from_january26: Sunday Saver Interest for January sunday_saver_interest_capture_from_july26: Sunday Saver Interest for July 26 sunday_saver_interest_capture_from_june26: Sunday Saver Interest for June 26 sunday_saver_interest_capture_from_march_26: Sunday Saver Interest for March sunday_saver_interest_capture_from_march26: Sunday Saver Interest for March 26 sunday_saver_interest_capture_from_may26: Sunday Saver Interest for May 26 sunday_saver_interest_capture_from_november25: Sunday Saver Interest for November sunday_saver_interest_capture_from_october25: Sunday Saver Interest for October sunday_saver_interest_capture_from_june25: Sunday Saver Interest from June 25 sunday_saver_interest_capture_june_25: Sunday Saver Interest June 2025 sunday_saver_interest_capture_may_25: Sunday Saver Interest May 2025 sunday_saver_interest_capture_pause_25: Sunday Saver Interest Pause tastecard_staff_campaign: Tastecard Marketing Campaign - Staff tell_jo: Tell Jo tempdnc: Temp DNC tesco_staff: Tesco Staff promo_10_test_campaign: Test Campaign testing_marketing: Testing - Marketing testing_marketing_2: Testing - Marketing 2 tvp_non_standard_dd: The Vulnerability Partnership Non Standard DD tvp_placement: The Vulnerability Partnership Placement tvp_repayment_plan: The Vulnerability Partnership Repayment Plan traditional_half_hourly_meter: Traditional Half Hourly Meter twin_element_meter_installed: Twin Element Meter Installed unhealthy_smart_meter_exchange_required: Unhealthy Smart meter - exchange required united_utilities_staff: United Utilities Staff utilita-migrated-customer: Utilita Migrated Customer vm02_switch_off: VM02 switch off vodaphone_staff: Vodafone staff vwan: VWAN whd_nr_2026: Warm Home Discount NR 2026 whd_broader_group: WHD Broader Group whd_core_grp_1: WHD Core Group 1 whd_core_grp_2: WHD Core Group 2 whd_nr_cheque: WHD - Non redeemer - Cheques warm_home_discount_prepay_voucher_non_redeemer: WHD - Non redeemer - Prepay Voucher whitbread_staff: Whitbread Staff winddown_campaign: Winddown Campaign write_off: Write-off write_off_deceased: Write-off - Deceased write_off_historic_sap_term_debt: Write-off - Historic SAP Term Debt write_off_small_business: Write off - Small Business write_off_term_dca_settlement_agreed: Write off - Term DCA Settlement Agreed wrr_ie_received: WRR IE Received ww_bundles: WW Bundles ww_choices: WW Choices ww_faps: WW FAPs '': '' None: None start_date: type: string format: date nullable: true description:

The start date for when the account will be associated to this campaign.

x-validators: - 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 ⁨expiry_date⁩ not before or equal to ⁨start_date⁩ description: Validates that ⁨expiry_date⁩, if given, is strictly later than ⁨start_date⁩. possible_errors: - start_date_same_as_end_date AccountConsent: type: object properties: description: type: string description:

A description of any additional details about the obtaining of this consent.

maxLength: 255 signed_at: type: string format: date-time description:

The date and time the consent was signed. Defaults to now if not provided.

x-validators: - name: Validate ⁨signed_at⁩ not in the future description: Validates that the given ⁨signed_at⁩ is not in the future. possible_errors: - date_in_future type: x-spec-enum-id: 4f53cda18c2baa0c description:

The consent type.

x-comment: Choices for this field are dynamic, once appropriate values have been configured they will be rendered here. value: enum: - ACCEPTED - REJECTED - UNKNOWN - PENDING type: string x-spec-enum-id: f72b73bd6917b6e4 description:

The value for this consent type.

x-enum-descriptions: ACCEPTED: ACCEPTED REJECTED: REJECTED UNKNOWN: UNKNOWN PENDING: PENDING required: - type - value AccountNotFoundError: type: object properties: detail: type: string description:

Detail of the account not found error.

required: - detail AccountNote: type: object properties: account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

deprecated: true x-use-instead: external_account_number external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

import_supplier: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description:

The import supplier code that the account was imported on to. This, along with the external_account_number, will be used to find the account in Kraken.

x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA notes: type: array items: $ref: '#/components/schemas/Note' description:

List of notes linked to the account. A note body or document_paths must be provided.

required: - import_supplier - notes x-validators: - name: Validate that account data is staged and account created description: Validate that an account exists for the external_account_number and import_supplier 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 AccountPortfolio: type: object properties: billing_name: type: string description:

Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.

maxLength: 510 notes: type: array items: $ref: '#/components/schemas/Note' description:

List of notes that should be applied at the portfolio level instead of the individual account.

portfolio_references: type: array items: $ref: '#/components/schemas/PortfolioReference' description:

List of references to the portfolio that this account belongs to.

portfolio_settings: allOf: - $ref: '#/components/schemas/PortfolioSettings' nullable: true description:

This object allows for setting portfolio settings during data migration. This object is only available where the is_portfolio_lead flag is true. Any other account type will fail validation.

x-validators: - 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 AccountReference: type: object properties: namespace: type: string description:

The namespace refers to the particular context the reference exists in. For example, tentacle-energy.allpay-client-reference-numbers.

maxLength: 50 x-validators: - name: Validate account reference namespace description: Validate that the account reference namespace matches an available account reference namespace in Kraken. possible_errors: - invalid_reference_namespace value: type: string description:

The unique identifier for the account.

maxLength: 100 required: - namespace - value x-validators: - name: Validate account reference does not already exist description: Validate that the account reference does not already exist for any account in Kraken. possible_errors: - reference_already_exists AccountTransferStatus: type: object properties: account_number: type: string description: Deprecated. Use `kraken_account_number` instead. kraken_account_number: type: string description: Account number status: enum: - UNKNOWN - COMPLETED - IN_PROGRESS type: string description: |- * `UNKNOWN` - No account found in Kraken for the external account number and import supplier code. Either a previous process attempt has failed, or the import has never been attempted to be processed. * `COMPLETED` - An account has been created in Kraken for the external account number and import supplier code. * `IN_PROGRESS` - There is currently a migration process attempting to create this account. x-spec-enum-id: 19fd6adce0a34a4b x-enum-descriptions: UNKNOWN: No account found in Kraken for the external account number and import supplier code. Either a previous process attempt has failed, or the import has never been attempted to be processed. COMPLETED: An account has been created in Kraken for the external account number and import supplier code. IN_PROGRESS: There is currently a migration process attempting to create this account. required: - status Address: type: object properties: administrative_area: type: string default: '' description:

The top-level administrative subdivision. For example a US state, Australian state/territory, Italian region, UK constituent nation or Japanese prefecture.

maxLength: 512 country: type: string description:

The ISO 3166-1-alpha-2 code of the country that this address belongs to, for example AU (Australia) or GB (Great Britain).

maxLength: 2 delivery_point_identifier: type: string description:

The unique country specific identifier for an address. For example the UPRN in the UK or G-NAF ID in Australia.

maxLength: 11 x-validators: - name: Validate delivery point identifier description: Validate that the delivery point identifier contains only capital letters and numbers. possible_errors: - invalid_delivery_point_identifier dependent_locality: type: string default: '' description:

Dependent localities, neighbourhoods or boroughs. These are sometimes included in an address when the delivery point is outside the boundary of the main postal town that serves it.

maxLength: 512 locality: type: string default: '' description:

The city/town portion of an address. For example a US city, Australian suburb/town, Italian comune or UK postal town.

maxLength: 512 name: type: string default: '' description:

The recipient's name.

deprecated: true organization: type: string default: '' description:

The company or organization to which the address belongs.

deprecated: true postal_code: type: string default: '' description:

The code assigned to a geographical area representing a group of addresses. For example a US ZIP code, Australian postcode, Italian CAP code or UK postcode.

maxLength: 512 sorting_code: type: string default: '' description:

This is a non-geographic code used for recipients of large quantities of post, such as companies or government departments. An example is the French CEDEX code.

maxLength: 512 street_address: type: string default: '' description:

Free text field for the address. Either this field or the structured_address field should be provided, not both.

structured_street_address: type: object nullable: true description:

Structured address object. Fields for this object are territory dependent. Please speak to the tech team about uses of this field. Either this field or the street_address should be provided, not both.

required: - country x-validators: - name: Validate and normalize postcode description: Validate the postal code and normalize it to a standard format. possible_errors: - invalid_postcode - name: Validate address description: Validate that the address is in the correct format. possible_errors: - invalid_address AgedDebt: type: object properties: debt_amount: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The amount of the aged debt.

due_date: type: string format: date description:

The date on which the aged debt is due.

AgreementIntermediaryDetails: type: object properties: external_id: type: string nullable: true description:

An external identifier for the intermediary relationship. This can be used to store a reference to this relationship in an external system (e.g., the source system during migration).

maxLength: 255 portfolio_number: type: string description:

The number of the intermediary portfolio to link this agreement to. The portfolio must exist before creating the agreement.

x-validators: - name: Validate the portfolio number description: Validate that the portfolio number matches the expected format (P- followed by 8 uppercase alphanumeric characters). possible_errors: - invalid_portfolio_number required: - portfolio_number BadCreateOrUpdateAccountImportProcess: oneOf: - $ref: '#/components/schemas/AccountAlreadyImportedResponse' - $ref: '#/components/schemas/DRFError' BadCreateTransactionsRequest: oneOf: - $ref: '#/components/schemas/NonFieldErrors' - $ref: '#/components/schemas/ErrorCreatingTransactions' BadProcessAccountImportProcess: oneOf: - $ref: '#/components/schemas/AccountAlreadyImportedResponse' - $ref: '#/components/schemas/DRFError' BadValidateAccountRequest: oneOf: - $ref: '#/components/schemas/AccountAlreadyImportedResponse' - $ref: '#/components/schemas/DRFError' BaseBusiness: type: object properties: business_type: enum: - SOLE_TRADER - LTD - PTY_LTD - PARTNERSHIP - CHARITY - PLC - LLP - TRUST - TRADING_AS - GOVERNMENT - NON_PROFIT - CHURCH - HOMEOWNER_ASSOCIATION - TBD type: string x-spec-enum-id: 8cd3a9d2ed8d5378 description:

The type of business this account related to. The business type can only be provided for business accounts.

x-enum-descriptions: SOLE_TRADER: Sole trader LTD: Limited PTY_LTD: Proprietary Limited Company PARTNERSHIP: Partnership CHARITY: Charity PLC: Public limited company LLP: Limited liability partnership TRUST: Trust TRADING_AS: Trading as GOVERNMENT: Government NON_PROFIT: Non profit CHURCH: Church HOMEOWNER_ASSOCIATION: Homeowner association TBD: To be determined company_name: type: string description:

The company name for a business account.

maxLength: 255 company_number: type: string description:

The company number for a business account.

maxLength: 100 x-validators: - name: Validate company number description: Validate the company number and standardize its format. possible_errors: - invalid_company_number details: type: array items: $ref: '#/components/schemas/BusinessDetail' description:

Generic solution for storing additional business data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. Keys must be registered in Kraken and will have a value type the value for the key must confirm to.

x-validators: - name: Validate that each child has unique values for the ⁨key⁩ field description: Validate that each child has unique values for the ⁨key⁩ field. possible_errors: - children_with_duplicate_values portfolios: type: array items: $ref: '#/components/schemas/BusinessPortfolio' description:

Information about the portfolios associated with this business.

segment_name: x-spec-enum-id: 4f53cda18c2baa0c description:

The segment to which the business belongs.

x-comment: Choices for this field are dynamic, once appropriate values have been configured they will be rendered here. users: type: array items: $ref: '#/components/schemas/BusinessUser' description:

List of the business users associated with the business.

BasePaymentPreference: type: object properties: type: enum: - ACTIVE_EXISTING - ACTIVE_NEW - PASSIVE type: string x-spec-enum-id: 4cc9502ba974f87d description:

Indicates whether this payment preference refers to an existing payment instruction already present in Kraken, or to a new one being created in the import.

x-enum-descriptions: ACTIVE_EXISTING: Existing Payment Instruction ACTIVE_NEW: New Payment Instruction PASSIVE: No Payment Instruction Preference ledger_identifier: type: string description:

Identifier for the ledger from the ledgers. This will be used to link the payment instruction to a specific ledger being imported using payment preference.

required: - ledger_identifier - type Business: oneOf: - $ref: '#/components/schemas/BaseBusiness' - $ref: '#/components/schemas/BusinessWithExistingContracts' discriminator: propertyName: enforce_business_contracts_exist mapping: null: '#/components/schemas/BaseBusiness' false: '#/components/schemas/BaseBusiness' true: '#/components/schemas/BusinessWithExistingContracts' BusinessDetail: type: object properties: key: enum: - sic_codes - vat_number - registered_charity_number - ofgem_protection_label type: string x-spec-enum-id: 4b478434679508cf description:

The key for the business detail. Keys need to be registered before import. If a value is provided for a key that is not registered then an error will be raised.

x-enum-descriptions: sic_codes: sic_codes vat_number: vat_number registered_charity_number: registered_charity_number ofgem_protection_label: ofgem_protection_label value: description:

The value for the business detail. This must match the type the registered key is expecting.

required: - key - value x-validators: - name: Validate that the value for the business details key has the correct type description: Validate that the value given has the type that matches the type configured for the registered business detail key. possible_errors: - business_detail_incorrect_value_type - name: Validate the business details value description: Validate that business detail value complies with any validation required by their corresponding detail key. possible_errors: - business_detail_failed_validation BusinessPortfolio: type: object properties: billing_name: type: string description:

Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.

maxLength: 510 notes: type: array items: $ref: '#/components/schemas/Note' description:

List of notes that should be applied at the portfolio level instead of the individual account.

portfolio_references: type: array items: $ref: '#/components/schemas/PortfolioReference' description:

List of references to the portfolio that this account belongs to.

minItems: 1 portfolio_settings: allOf: - $ref: '#/components/schemas/PortfolioSettings' nullable: true description:

This object allows for setting portfolio settings during data migration. This object is only available where the is_portfolio_lead flag is true. Any other account type will fail validation.

required: - portfolio_references x-validators: - 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 BusinessUser: type: object properties: alternative_phone_numbers: type: array items: $ref: '#/components/schemas/CustomerAlternativeNumber' description:

A list of the customer's alternative phone numbers.

business_roles: type: array items: enum: - POWER_OF_ATTORNEY - NEIGHBOUR - LOA_LEVEL_1 - LOA_LEVEL_3 - CARER - ADMIN - EXECUTOR - LOA_LEVEL_2 - STUDENT_HOUSE - FRIEND_FAMILY_MEMBER type: string description: |- * `POWER_OF_ATTORNEY` - POWER_OF_ATTORNEY * `NEIGHBOUR` - NEIGHBOUR * `LOA_LEVEL_1` - LOA_LEVEL_1 * `LOA_LEVEL_3` - LOA_LEVEL_3 * `CARER` - CARER * `ADMIN` - ADMIN * `EXECUTOR` - EXECUTOR * `LOA_LEVEL_2` - LOA_LEVEL_2 * `STUDENT_HOUSE` - STUDENT_HOUSE * `FRIEND_FAMILY_MEMBER` - FRIEND_FAMILY_MEMBER x-spec-enum-id: 3dc3c0de7d5344dd x-enum-descriptions: POWER_OF_ATTORNEY: POWER_OF_ATTORNEY NEIGHBOUR: NEIGHBOUR LOA_LEVEL_1: LOA_LEVEL_1 LOA_LEVEL_3: LOA_LEVEL_3 CARER: CARER ADMIN: ADMIN EXECUTOR: EXECUTOR LOA_LEVEL_2: LOA_LEVEL_2 STUDENT_HOUSE: STUDENT_HOUSE FRIEND_FAMILY_MEMBER: FRIEND_FAMILY_MEMBER description:

A list of business roles to be assigned to the customer. These apply to all accounts the business has access to.

contact_emails: type: array items: type: string format: email description:

A list of additional email addresses to associate with the customer account. These can be used for sending communications to the customer. Each email must be a valid email address.

credit_assessment_id: type: string nullable: true description:

Customers credit assessment id.

credit_result: type: string nullable: true description:

The credit result from the provider.

credit_risk_bracket: enum: - LOW - MID - HIGH - UNKNOWN - '' - null type: string x-spec-enum-id: e6b98b6c312ff7bf nullable: true description:

The deemed credit risk bracket for this customer.

x-enum-descriptions: LOW: Low MID: Medium HIGH: High UNKNOWN: Unknown '': '' None: None credit_score: type: integer maximum: 9999 minimum: 0 nullable: true description:

Customers credit score.

date_of_birth: type: string format: date nullable: true description:

The customer's date of birth.

deceased: enum: - Reported - Confirmed - '' type: string x-spec-enum-id: f90e7d899a971044 default: '' description:

Whether the customer is deceased or not. Defaults to an empty string if not provided.

x-enum-descriptions: Reported: Reported Confirmed: Confirmed '': '' details: nullable: true description:

Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.

deprecated: true x-use-instead: user_details x-validators: - name: Validate user details description: Validates that the user detail namespace and value are allowed for the customer. The user detail namespace (the key in the JSON object) must already have been set up in Kraken. The value (the value in the JSON object) must be the correct data type. possible_errors: - customer_detail_failed_validation - customer_detail_incorrect_value_type - customer_detail_not_registered email: type: string format: email nullable: true description:

The customer's email address. This is the email address they will use to log into their online portal. Defaults to an empty string if not provided. Cannot be longer that 254 characters.

maxLength: 254 x-validators: - name: Validate email address is not test address description: Validates that a customer email address is not a test email address. An email address is considered a test address if it starts with "test@"" or "xxx@"" or ends with "@test.com", "@test.co.uk", ".xxx" or ".xx". possible_errors: - possible_test_email_address - name: Validate email is not internal description: Validates that a customer email address does not use an internal Kraken handler. For example, if an instance of Kraken has registered info@kraken.info as an internal email address, then the customer email address must not match this. possible_errors: - internal_email_address family_name: type: string default: '' description:

The customer's family name.

maxLength: 255 given_name: type: string default: '' description:

The customer's given name.

maxLength: 255 label: type: string nullable: true description:

A free text field to help identify the user (e.g. a job title).

landline: type: string nullable: true default: '' description:

The customer's landline phone number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number mobile: type: string nullable: true default: '' description:

The customer's personal mobile number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number salutation: type: string nullable: true default: '' description:

The customer's preferred salutation.

maxLength: 128 title: type: string nullable: true default: '' description:

The customer's preferred title.

maxLength: 20 unable_to_read_meters: type: boolean default: false description:

Whether the customer is unable to read their meters themselves. Defaults to False.

user_details: type: array items: $ref: '#/components/schemas/CustomerUserDetail' description:

Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.

x-validators: - name: Validate required customer details namespaces provided description: No required namespaces configured. Validation skipped. possible_errors: - required_customer_details_namespace_missing required: - business_roles x-validators: - name: Ensures only user_details or details are provided description: Ensures that only user_details or details 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 unknown_occupier flag at the account-level. possible_errors: - customer_may_not_be_named_the_occupier BusinessWithExistingContracts: type: object properties: business_contract_identifier: type: string description:

The business contract's unique identifier.

deprecated: true x-use-instead: business_contract_identifiers business_contract_identifiers: type: array items: type: string description:

The business contract's unique identifier.

description:

List of business unique contract identifiers

business_type: enum: - SOLE_TRADER - LTD - PTY_LTD - PARTNERSHIP - CHARITY - PLC - LLP - TRUST - TRADING_AS - GOVERNMENT - NON_PROFIT - CHURCH - HOMEOWNER_ASSOCIATION - TBD type: string x-spec-enum-id: 8cd3a9d2ed8d5378 description:

The type of business this account related to. The business type can only be provided for business accounts.

x-enum-descriptions: SOLE_TRADER: Sole trader LTD: Limited PTY_LTD: Proprietary Limited Company PARTNERSHIP: Partnership CHARITY: Charity PLC: Public limited company LLP: Limited liability partnership TRUST: Trust TRADING_AS: Trading as GOVERNMENT: Government NON_PROFIT: Non profit CHURCH: Church HOMEOWNER_ASSOCIATION: Homeowner association TBD: To be determined company_name: type: string description:

The company name for a business account.

maxLength: 255 company_number: type: string description:

The company number for a business account.

maxLength: 100 x-validators: - name: Validate company number description: Validate the company number and standardize its format. possible_errors: - invalid_company_number details: type: array items: $ref: '#/components/schemas/BusinessDetail' description:

Generic solution for storing additional business data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. Keys must be registered in Kraken and will have a value type the value for the key must confirm to.

x-validators: - name: Validate that each child has unique values for the ⁨key⁩ field description: Validate that each child has unique values for the ⁨key⁩ field. possible_errors: - children_with_duplicate_values portfolios: type: array items: $ref: '#/components/schemas/BusinessPortfolio' description:

Information about the portfolios associated with this business.

segment_name: x-spec-enum-id: 4f53cda18c2baa0c description:

The segment to which the business belongs.

x-comment: Choices for this field are dynamic, once appropriate values have been configured they will be rendered here. users: type: array items: $ref: '#/components/schemas/BusinessUser' description:

List of the business users associated with the business.

x-validators: - 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 link_account_to_business_with_contract 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 link_account_to_business_with_contract 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 business_contract_identifiers or business_contract_identifier is provided in the payload. possible_errors: - missing_contract_identifier Complaint: type: object properties: complainant_email: type: string format: email description:

The email address of the complainant. This should be the email address of a customer related to the account unless the complaint was raised from a different email address.

x-validators: - name: Validate email address is not test address description: Validates that a customer email address is not a test email address. An email address is considered a test address if it starts with "test@"" or "xxx@"" or ends with "@test.com", "@test.co.uk", ".xxx" or ".xx". possible_errors: - possible_test_email_address complainant_name: type: string description:

The name of the complainant. This should be the name of a customer related to the account unless the complaint was raised by another person.

maxLength: 255 complaint_contacts: type: array items: $ref: '#/components/schemas/ComplaintContact' description:

The list of each contact with the consumer in respect of a complaint.

created_at: type: string format: date-time description:

The datetime the complaint was created at.

has_chsr_letter_been_sent: type: boolean description:

Whether the customer has been sent a CHSR letter for the complaint.

has_eight_week_letter_been_sent: type: boolean description:

Whether the customer has been sent an eight week letter for the complaint.

official_entity: type: string description:

The official organization of the complaint if it is an official complaint.

official_reference_number: type: string description:

The official reference number of the complaint if it is an official complaint.

official_status: type: string description:

The official status of the complaint if it is an official complaint.

subtype_of_complaint: type: string description:

The subtype of the complaint.

type_of_complaint: type: string description:

The type of the complaint.

required: - complainant_email - complainant_name - complaint_contacts - created_at - has_chsr_letter_been_sent - has_eight_week_letter_been_sent - subtype_of_complaint - type_of_complaint x-validators: - name: Validate complaint type and subtype description: Validates that this instance of Kraken allows the complaint type and that the complaint subtype is an allowed subtype of the complain type. possible_errors: - invalid_complaint_type_or_subtype - name: Validate an official complaint's organization and status. description: Validates that this instance of Kraken allows the official complaints organization and that the status is configured for the organization. possible_errors: - invalid_official_organization_or_status - name: Validate all required official complaint fields are present description: If the complaint is an official complaint, the official reference number, official organization, and official status must all be provided. possible_errors: - official_complaint_field_missing - name: Validate that a CHSR letter has been sent for the complaint description: Validates that if an eight week letter has been sent for the complaint, a CHSR letter must have also been sent. possible_errors: - chsr_letter_not_sent ComplaintContact: type: object properties: body: type: string description:

The body of text or a summary of the contact regarding the complaint.

communication_method: enum: - LANDLINE - MOBILE - EMAIL - POST type: string x-spec-enum-id: f2b09e3acbce7139 description:

The method of communication used to contact regarding the complaint.

x-enum-descriptions: LANDLINE: LANDLINE MOBILE: MOBILE EMAIL: EMAIL POST: POST communication_source: type: string description:

The source of communication used to contact regarding the complaint.

created_at: type: string format: date-time description:

The datetime the complaint contact was created at.

status: enum: - OPEN - RESOLVED - NO_CONTACT - REOPENED - DEADLOCK - CANCELLED type: string x-spec-enum-id: 89e3c5df2a7f586b description:

The status of the complaint at the time the contact was made to track status changes, e.g. resolution.

x-enum-descriptions: OPEN: OPEN RESOLVED: RESOLVED NO_CONTACT: NO_CONTACT REOPENED: REOPENED DEADLOCK: DEADLOCK CANCELLED: CANCELLED required: - body - communication_method - communication_source - created_at - status x-validators: - name: Validate the complaint communication source description: Validates that the complaint communication source provided is configured. possible_errors: - invalid_complaint_source ContributionSchemeAgreement: type: object properties: active_period_end_date: type: string format: date nullable: true description:

The date the agreement is valid to (inclusive).

active_period_start_date: type: string format: date description:

The date the agreement is valid from (inclusive).

amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount to contribute.

interval: enum: - MONTHLY - QUARTERLY type: string x-spec-enum-id: 32f2645408966f31 description:

The charge interval for the contribution scheme agreement.

x-enum-descriptions: MONTHLY: monthly QUARTERLY: quarterly periods: type: array items: $ref: '#/components/schemas/ContributionSchemePeriod' description:

The previous and current contribution periods.

scheme: type: string description:

The scheme code for the contribution scheme agreement.

x-validators: - name: Validate contribution scheme exists description: Validates that the contribution scheme exists in Kraken. possible_errors: - invalid_contribution_scheme required: - active_period_start_date - amount - interval - scheme x-validators: - name: Validate ⁨active_period_end_date⁩ not before ⁨active_period_start_date⁩ description: Validates that ⁨active_period_end_date⁩, if given, is on or later than ⁨active_period_start_date⁩. possible_errors: - start_date_later_than_end_date - name: Validate contribution period dates description: Validates that all contribution periods have a start date on or later than the active period start date and an end date on or before the active period end date. Also validates that no periods have overlapping dates. possible_errors: - invalid_contribution_period_end_date - invalid_contribution_period_start_date - overlapping_contribution_periods ContributionSchemePeriod: type: object properties: end_date: type: string format: date description:

The date the contribution scheme period is valid to (exclusive).

fulfilled_at: type: string format: date-time nullable: true description:

The datetime that the contribution scheme period was agreed.

start_date: type: string format: date description:

The date the contribution scheme period is valid from (inclusive).

required: - end_date - start_date x-validators: - name: Validate ⁨end_date⁩ not before ⁨start_date⁩ description: Validates that ⁨end_date⁩, if given, is on or later than ⁨start_date⁩. possible_errors: - start_date_later_than_end_date CreateAccountNotesResponse: type: object properties: body: type: string description:

The body of the note. Should include who/what created the note if this is required.

created_at: type: string format: date-time description:

The date and time the note was created.

document_paths: type: array items: $ref: '#/components/schemas/NoteDocument' description:

A list of relative paths in S3 for documents to be attached to the note.

More details on document path parameters can be found here.

external_id: type: string description:

Unique identifier for this note to avoid duplicate entries.

is_archived: type: boolean description:

If set to true, this will archive the note in the Kraken account support site page.

is_pinned: type: boolean description:

If set to true, this will pin the note to the top of the Kraken account support site page.

status: enum: - NOTE_CREATION_SUCCESS - NOTE_ALREADY_EXISTS type: string x-spec-enum-id: 31aeae5ed4ff8531 description:

The creation status for each note attempted to be imported.

x-enum-descriptions: NOTE_CREATION_SUCCESS: The note has been successfully created. NOTE_ALREADY_EXISTS: A similar note has been found preventing the creation of a new note. unpin_at: type: string format: date-time description:

When the pinned note should be unpinned. Has to be later than created_at if this is provided. Has no effect if the note is not pinned.

required: - status x-validators: - name: Validate note body or document paths provided description: Validate that at least a note body or document paths are provided. possible_errors: - note_body_or_document_path_not_found - name: Validate note created at is equal to or before unpin at description: Validate that the note's created at date is equal to or before the unpin at date if both are provided. possible_errors: - note_unpin_at_earlier_than_creation_date CreateOrUpdateAccountImportProcess: type: object properties: external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

maxLength: 128 import_supplier_code: type: string description:

The import supplier code that the account was imported on to. This, along with the external_account_number, will be used to find the account in Kraken.

maxLength: 32 required: - external_account_number - import_supplier_code CreatePaymentInstructionError: type: object properties: error_detail: type: string description:

If payment instruction creation failed, then this field will provide details of the error.

external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

import_supplier: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description:

The import supplier code that the account was imported on to. This, along with the external_account_number, will be used to find the account in Kraken.

x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA reference: type: string description:

The reference of the mandate as known by the vendor.

maxLength: 128 required: - error_detail - external_account_number - import_supplier - reference x-validators: - name: Validate that account data is staged and account created description: Validate that an account exists for the external_account_number and import_supplier 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 CreatePaymentInstructionResponse: type: object properties: account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

maxLength: 128 kraken_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

maxLength: 128 reference: type: string description:

The reference of the mandate as known by the vendor.

maxLength: 128 required: - account_number - kraken_account_number - reference CustomerAlternativeNumber: type: object properties: phone_number: type: string nullable: true default: '' description:

A customer's alternative phone number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number CustomerConsent: type: object properties: description: type: string description:

A description of any additional details about the obtaining of this consent.

maxLength: 255 signed_at: type: string format: date-time description:

The date and time the consent was signed. Defaults to now if not provided.

x-validators: - name: Validate ⁨signed_at⁩ not in the future description: Validates that the given ⁨signed_at⁩ is not in the future. possible_errors: - date_in_future type: x-spec-enum-id: 4f53cda18c2baa0c description:

The consent type.

x-comment: Choices for this field are dynamic, once appropriate values have been configured they will be rendered here. value: enum: - ACCEPTED - REJECTED - UNKNOWN - PENDING type: string x-spec-enum-id: f72b73bd6917b6e4 description:

The value for this consent type.

x-enum-descriptions: ACCEPTED: ACCEPTED REJECTED: REJECTED UNKNOWN: UNKNOWN PENDING: PENDING required: - type - value CustomerUserDetail: type: object properties: namespace: enum: - external_user_id type: string x-spec-enum-id: 6bb07f5044ea9b8a description:

The namespace of the customer user detail.

x-enum-descriptions: external_user_id: external_user_id value: description:

The value of the customer user detail.

required: - namespace - value x-validators: - name: Validate user details description: Validates that the user detail namespace and value are allowed for the customer. The user detail namespace (the key in the JSON object) must already have been set up in Kraken. The value (the value in the JSON object) must be the correct data type. possible_errors: - customer_detail_failed_validation - customer_detail_incorrect_value_type - customer_detail_not_registered DRFError: type: object description: Simplistic and mostly inaccurate Serializer that should represent DRF's ValidationError details properties: field_name: type: array items: type: string description: Validation error messages. Debt: type: object properties: aged_debt: type: array items: $ref: '#/components/schemas/AgedDebt' description: "
\n A list of any aged debt on this account.\n \

\n

This is essentially the debt position of the account. Typically we report this based on a\n grouping by date. We can then report on the delinquency at 30+ or 60+ days etc. As such we\n need to know when the debt was generated.

\n

The data we receive will be converted into a historic record of the debt, which we will\n \ continue to age within Kraken.

\n

How you report it to Kraken is up to you, the more granular you provide it, the more\n \ accurate the debt ageing will be.

\n

For example, if debt is £150 and the customer has not paid us £50 a month then we could\n \ expect the following:

\n \n

We would aggregate in our reporting to:

\n \n

In 2 months time (assuming they continue to not pay) this would be:

\n \n

\n
" agency_name: type: string description:

The name of the debt collection agency.

maxLength: 256 cais_reference: type: string description:

The CAIS reference for this account.

x-validators: - name: Validate CAIS reference available description: Validates that this Kraken instance is configured to support CAIS references and that this reference has not already been provided for an existing account. possible_errors: - cais_reference_already_in_use_on_another_account - cais_references_not_supported campaign: type: string description:

The campaign for the debt collection proceeding.

maxLength: 256 is_insolvent: type: boolean default: false description:

Whether the account is currently insolvent or not.

notes: type: string description:

The notes for the debt collection proceeding.

maxLength: 256 start_date: type: string format: date description:

The start date of the debt proceeding. If an agency_name is provided but no start_date, the migration date is used.

x-validators: - name: Validate debt collection agency description: Validate that if a start date has been provided, an agency name is also provided, and that agency is supported by Kraken. possible_errors: - debt_collection_agency_does_not_exist - debt_collection_agency_name_required DepositAgreement: type: object properties: accepted_at: type: string format: date-time nullable: true description:

The datetime when the customer accepted to pay the deposit.

deposit_amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of the deposit.

fulfilled_at: type: string format: date-time nullable: true description:

The datetime when the customer fulfilled the deposit.

last_interest_date: type: string format: date nullable: true description:

The date when the last interest was calculated. Only allowed when agreement is fulfilled.

reason: type: string description:

The reason for the deposit.

required: - deposit_amount - reason x-validators: - name: Validate deposit agreement last interest date description: Validates that the last_interest_date is only provided if the deposit agreement is fulfilled. If provided then the fulfilled_at date cannot be later than the last_interest_date. possible_errors: - fulfilled_at_greater_than_last_interest_date - last_interest_date_not_allowed DunningPath: type: object properties: path_name: type: string description:

Name of the dunning path to set this account onto. This must be agreed upon before migration and is client specific.

maxLength: 256 start_date: type: string format: date description:

The date on which to start the dunning path. If no date is provided, the dunning path will be restarted on the migration date and delayed by the number_of_days_to_delay_dunning_path_start value provided in the import config.

x-validators: - name: Validate date not in past description: Validates that the given date is not in the past. possible_errors: - date_in_past required: - path_name ElectricityAgentContractReference: type: object properties: agent_mpid: type: string nullable: true description:

The Market Participant ID (MPID) for the agent.

maxLength: 4 minLength: 4 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 contract_reference: type: string description:

The contract reference for the agent contract.

maxLength: 10 is_amr: type: boolean description:

Whether the agent contract specific to AMR meter points.

is_customer_appointed: type: boolean description:

Whether the agent contract is customer appointed.

service_level_reference: type: string description:

The service level reference for the agent contract.

maxLength: 4 service_reference: type: string description:

The service reference for the agent contract.

maxLength: 4 ElectricityAgents: type: object properties: da_contract: allOf: - $ref: '#/components/schemas/ElectricityAgentContractReference' nullable: true description:

The Data Aggregator (DA) contract for the meter point.

dc_contract: allOf: - $ref: '#/components/schemas/ElectricityAgentContractReference' nullable: true description:

The Data Collector (DC) contract for the meter point.

mop_contract: allOf: - $ref: '#/components/schemas/ElectricityAgentContractReference' nullable: true description:

The Meter Operator (MOP) contract for the meter point.

ElectricityAgreement: type: object properties: agreed_at: type: string format: date-time nullable: true description:

The datetime the agreement was agreed at.

bespoke_tariff_rates: type: array items: $ref: '#/components/schemas/ElectricityBespokeElectricityTariffRate' description:

List of bespoke tariff rates applicable to this agreement. Usually only relevant for business accounts.

x-validators: - name: Validate that all bespoke tariff rates are unique description: Ensure that there are no duplicate bespoke tariff rates provided. possible_errors: - duplicate_bespoke_rates business_contract_identifier: type: string nullable: true description:

The identifier of the business contract this agreement should be linked to.

characteristics: type: array items: $ref: '#/components/schemas/ProductCharacteristic' nullable: true description:

Characteristics of the agreed product that the customer has chosen.

x-validators: - name: Validate that each child has unique values for the ⁨code⁩ field description: Validate that each child has unique values for the ⁨code⁩ field. possible_errors: - children_with_duplicate_values effective_from: type: string format: date description:

The date from which the agreement is effective (inclusive), i.e. the agreement starts on the midnight of this date, such that this date becomes the first day covered by this agreement.

effective_to: type: string format: date nullable: true description:

The date to which the agreement is effective (exclusive), i.e. the agreement will end on the midnight of this date, such that the previous day is the last day covered by this agreement.

intermediary: allOf: - $ref: '#/components/schemas/AgreementIntermediaryDetails' nullable: true description:

Details about the intermediary relationship for this agreement. When provided, an intermediary link will be created between the agreement and the portfolio, establishing a business intermediary relationship.

rate_overrides: type: array items: $ref: '#/components/schemas/RateOverride' nullable: true description:

Agreement rate overrides.

rates_agreed_at: type: string format: date-time nullable: true description:

The datetime the rates were agreed at.

tariff_code: type: string description:

The code for the agreement tariff. Must match an existing tariff code of an active product.

x-validators: - name: Validate electricity tariff exists description: Validate that the provided tariff code has an existing electricity tariff in Kraken. possible_errors: - tariff_code_not_found required: - effective_from - tariff_code x-validators: - name: Validate ⁨effective_to⁩ not before ⁨effective_from⁩ description: Validates that ⁨effective_to⁩, if given, is on or later than ⁨effective_from⁩. 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 register_id or rate_type are provided for bespoke tariff rate registers description: Ensure that all registers associated with a bespoke tariff rate have got at least a register_id or a rate_type 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 ElectricityBespokeElectricityTariffRate: type: object properties: meter_serial_number: type: string description:

Meter serial number to which this bespoke tariff applies

maxLength: 32 payment_method: enum: - DD - NDD - PP - '' - null type: string x-spec-enum-id: 362e54c421bbcaea nullable: true description:

The payment method for the bespoke rate. Only used for payment price switching enabled bespoke rates.

x-enum-descriptions: DD: Direct Debit NDD: Non-Direct Debit PP: Prepayment '': '' None: None registers: type: array items: $ref: '#/components/schemas/ElectricityBespokeRegisterRate' description:

For electricity meters, the unit rates are provided on a per register basis in this array.

standing_charge: type: string format: decimal pattern: ^-?\d{0,7}(?:\.\d{0,5})?$ description:

The value in pence per day of the charge (excluding VAT).

required: - registers - standing_charge ElectricityBespokeRegisterRate: type: object properties: rate_type: enum: - STANDARD - ECO7_DAY - ECO7_NIGHT - OFF_PEAK - PEAK - WEEKDAY - OFF_PEAK_WEEKENDS - WEEKENDS_OTHER - SUMMER - SUMMER_PEAK - SUMMER_OFF_PEAK - WINTER - WINTER_PEAK - WINTER_OFF_PEAK - NUCLEAR_RAB - SUMMER_WEEKENDS_OFF_PEAK_WINTER - TNUOS - CAPACITY_MARKET - HMC_GUARANTEE_ADVANCE - HMC_GUARANTEE_FULL - EV_DEVICE - EV_DEVICE_PEAK - EV_DEVICE_OFF_PEAK type: string x-spec-enum-id: 382cc620726bec21 description:

The rate type of the unit rate. If the register_id is not provided, the rate type must be provided instead.

x-enum-descriptions: STANDARD: Standard rate (pence per kWh) ECO7_DAY: Day (or peak) rate (pence per kWh) ECO7_NIGHT: Night (or off-peak) rate (pence per kWh) OFF_PEAK: Additional off-peak rate for three-rate tariffs (pence per kWh) PEAK: Peak rate (pence per kWh) for business tariffs WEEKDAY: Weekday rate (pence per kWh) for business tariffs OFF_PEAK_WEEKENDS: Off peak weekend rate (pence per kWh) for business tariffs WEEKENDS_OTHER: Weekend rate (pence per kWh) for business tariffs SUMMER: Summer rate (pence per kWh) for business tariffs SUMMER_PEAK: Summer peak rate (pence per kWh) for two-rate tariffs SUMMER_OFF_PEAK: Summer off-peak rate (pence per kWh) for two-rate tariffs WINTER: Winter rate (pence per kWh) for business tariffs WINTER_PEAK: Winter peak rate (pence per kWh) for two-rate tariffs WINTER_OFF_PEAK: Winter off-peak rate (pence per kWh) for two-rate tariffs NUCLEAR_RAB: Nuclear RAB rate (pence per day) for business tariffs SUMMER_WEEKENDS_OFF_PEAK_WINTER: A rate that applies during summer, weekends and off-peak in winter periods(pence per kWh) for business tariffs TNUOS: TNUoS rate (pence per day) for business tariffs CAPACITY_MARKET: Capacity Market rate (pence per day) for business tariffs HMC_GUARANTEE_ADVANCE: Hourly Matching Credit Guarantee Advance rate (pence per kWh) for business tariffs HMC_GUARANTEE_FULL: Hourly Matching Credit Guarantee Full rate (pence per kWh) for business tariffs EV_DEVICE: Electric vehicle device rate (pence per kWh) for sub-meter billing EV_DEVICE_PEAK: Electric vehicle device peak rate (pence per kWh) for sub-meter billing EV_DEVICE_OFF_PEAK: Electric vehicle device off-peak rate (pence per kWh) for sub-meter billing register_id: type: string description:

The identifier of the register to which this unit rate applies.

maxLength: 32 start_time: type: string format: time description:

The time of day from which this unit rate applies, following the ISO 8601 standard.

unit_rate: type: string format: decimal pattern: ^-?\d{0,7}(?:\.\d{0,5})?$ description:

The value in pence of the charge (excluding VAT).

required: - unit_rate ElectricityCapacityValue: type: object properties: effective_from_date: type: string format: date description:

The date the capacity value is effective from.

effective_to_date: type: string format: date description:

The date the capacity value is effective to (inclusive).

value: type: string format: decimal pattern: ^-?\d{0,5}(?:\.\d{0,2})?$ description:

The capacity value in kVA.

required: - effective_from_date - value x-validators: - name: Validate ⁨effective_to_date⁩ not before ⁨effective_from_date⁩ description: Validates that ⁨effective_to_date⁩, if given, is on or later than ⁨effective_from_date⁩. possible_errors: - start_date_later_than_end_date ElectricityConfigurationPeriod: type: object properties: effective_from_date: type: string format: date description:

The start date of the configuration period.

effective_to_date: type: string format: date description:

The end date of the configuration period. The latest period must be open-ended (omitted).

energisation_status: enum: - E - D type: string x-spec-enum-id: 24b2cc3e4616d2c0 description:

The energisation status for the configuration period.

x-enum-descriptions: E: E D: D gsp: type: string description:

The Grid Supply Point (GSP) group for the configuration period.

maxLength: 2 llf: type: string description:

The Line Loss Factor (LLF) for the configuration period.

maxLength: 3 measurement_class: enum: - A - B - C - D - E - F - G type: string x-spec-enum-id: d279209a7fa1219b description:

The measurement class for the configuration period.

x-enum-descriptions: A: A B: B C: C D: D E: E F: F G: G mtc: type: integer description:

The Meter Timeswitch Code (MTC) for the configuration period.

profile_class: type: integer description:

The profile class for the configuration period.

ssc: type: string description:

The Standard Settlement Configuration (SSC) for the configuration period.

maxLength: 4 required: - effective_from_date x-validators: - name: Validate ⁨effective_to_date⁩ not before ⁨effective_from_date⁩ description: Validates that ⁨effective_to_date⁩, if given, is on or later than ⁨effective_from_date⁩. possible_errors: - start_date_later_than_end_date ElectricityEstimatedAnnualConsumption: type: object properties: consumption: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The Estimated Annual Consumption (EAC) value in KWh.

effective_from: type: string format: date description:

The start date of the EAC entry.

source: type: string description:

The source of the EAC entry. For example, if the entry came from a D0019 flow, then D0019 would be an appropriate value.

maxLength: 255 tpr: type: string description:

The Time Pattern Regime code of the EAC entry.

maxLength: 16 required: - consumption - effective_from - tpr ElectricityMeter: type: object properties: installed_on: type: string format: date nullable: true description:

The date the meter was installed.

is_prepay: type: boolean default: false description:

Whether the meter is a prepay meter or not.

meter_serial_number: type: string description:

The serial number of the meter.

maxLength: 32 x-validators: - name: Validate meter serial number description: Validate that the meter serial number for a gas or electricity meter conforms to the specified industry format. possible_errors: - blank - invalid_meter_serial_number - supply_type_not_recognised prepay_customer_reference_number: type: string description:

The customer reference number for the prepay meter, as required for communication with the meter provider. Required if the is_prepay flag is set to true for an electricity meter and the migration involves no on-market switch.

maxLength: 20 x-validators: - name: Validate prepay customer reference number description: For electricity prepay meters only, validates that the prepay customer reference number can be converted into an integer. Any whitespace is removed before validating. possible_errors: - invalid_prepay_customer_reference_number prepay_details: allOf: - $ref: '#/components/schemas/EnergyPrepaymentDetails' description:

Financial information relating to the prepay meter. Only applicable to prepay meters.

reading_history: type: array items: $ref: '#/components/schemas/HistoricalReading' description:

A list of historical readings for the meter. Generally these are readings prior to the one(s) provided under transfer_readings. It is possible to provide readings here after the corresponding transfer reading date, but these must unbilled.

registers: type: array items: $ref: '#/components/schemas/ElectricityRegister' description:

A list of the current registers on the meter.

x-validators: - name: Validate that registers have unique TPRs description: 'Validate that all registers on an electricity meter have unique TPRs. As an exception to this rule, it is valid for certain meters to have two registers with the same TPR: this only applies to the odd TPRs from 01201 to 01229 inclusive.' possible_errors: - registers_have_duplicate_tprs removed_on: type: string format: date nullable: true description:

The date the meter was removed, if this was an exchanged meter.

smart_commissioned_on: type: string format: date nullable: true description:

The date on which the smart meter was commissioned. Optional if the meter is a smart meter, and should not be provided otherwise.

x-validators: - name: Validate that the commissioned on date is valid description: Ensure that the commissioned on date is not in the future. possible_errors: - future_smart_meter_commission_date smart_device_id: type: string nullable: true description:

The device ID of the smart meter (e.g. "01-23-45-67-89-AB-CD-EF"). Optional if the meter is a smart meter, and should not be provided otherwise.

x-validators: - name: Validate that the smart device ID is valid description: Ensure that the smart device ID is valid. possible_errors: - invalid_smart_device_id smart_type: enum: - NONE - SMETS1 - SMETS1_ENROLLED - SMETS2 type: string x-spec-enum-id: 0184b2482cb83b37 default: NONE description:

The type of smart meter, or NONE if it is not a smart meter. SMETS1 meters that have been through the Enrolment and Adoption (E&A) process should be marked as SMETS1_ENROLLED.

x-enum-descriptions: NONE: None SMETS1: SMETS1 SMETS1_ENROLLED: SMETS1-enrolled SMETS2: SMETS2 transfer_readings: type: array items: $ref: '#/components/schemas/Reading' description: "

The last reading (or readings, if the meter is ECO7 or ECO10) the account has been billed up to. If the account has never been billed, the SSD reading(s) must be provided instead.

\n

For electricity meter points, a transfer reading should be given per settlement register for each active meter. For gas meter points, a transfer reading should be given for each active meter.

\n

The date for each transfer reading should match the corresponding last_billed_to_date for the meter or register.

" required: - meter_serial_number x-validators: - 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 prepay_customer_reference_number provided. An active meter is one that does not have a removed_on date and has the is_prepay 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 ElectricityMeterPoint: type: object properties: supply_type: enum: - ELECTRICITY - GAS type: string x-spec-enum-id: 38ea23eee479fe46 description:

The supply type of this meter point.

x-enum-descriptions: ELECTRICITY: Electricity GAS: Gas agents: allOf: - $ref: '#/components/schemas/ElectricityAgents' nullable: true description:

The agents to appoint for the meter point.

agreements: type: array items: $ref: '#/components/schemas/ElectricityAgreement' description:

List of agreements linked to the supply point.

capacity_values: type: array items: $ref: '#/components/schemas/ElectricityCapacityValue' description:

The capacity values for this meter point.

x-validators: - name: Validate that the given periods are consecutive and have no gaps description: Validate that the given periods are consecutive and that the end date of the previous one, is the start date of the next one. possible_errors: - gaps_or_overlaps_in_periods - zero_length_periods ccl_exemptions: type: array items: $ref: '#/components/schemas/EnergyTaxExemption' description:

A list of CCL exemptions for the meter point. Must only be provided for business accounts.

x-validators: - name: Validate tax exemption end dates description: Validate that there is only one open ended tax exemption. possible_errors: - multiple_open_ended_tax_exemptions - name: Validate no overlapping tax exemptions description: Validate any tax exemptions are not overlapping. possible_errors: - overlapping_effective_dates_for_tax_exemptions configuration_periods: type: array items: $ref: '#/components/schemas/ElectricityConfigurationPeriod' description:

A list of historic electricity configuration periods for this meter point.

x-validators: - name: Validate that the given periods are consecutive and have no gaps description: Validate that the given periods are consecutive and that the end date of the previous one, is the start date of the next one. possible_errors: - gaps_or_overlaps_in_periods - zero_length_periods - name: Validate that configuration periods start in the past description: Validate that all configuration periods have an effective_from_date in the past and the latest period is open-ended. possible_errors: - configuration_period_starts_in_future - latest_configuration_period_not_open_ended dc_to_appoint: type: string nullable: true description:

The data collector (DC) to appoint for the meter point. This value should only be provided for an on-market switch.

deprecated: true x-use-instead: agents.dc_contract maxLength: 4 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 dr_in_progress: type: boolean nullable: true description:

Whether a disputed reading (DR) is in progress for this meter point. This should be resolved before importing the account, and a validation error will be raised if this field is set to true.

x-validators: - name: Validate that no disputed reads are in progress description: The validation process will be stopped if a disputed read is in progress. possible_errors: - disputed_read_in_progress eac_history: type: array items: $ref: '#/components/schemas/ElectricityEstimatedAnnualConsumption' description:

A history of Estimated Annual Consumption (EAC) entries for this meter point. At least one entry should be provided for each TPR in the list of registers.

x-validators: - name: Validate that there are no repeated entries in the EAC history description: Validate that there are no entries in the Estimated Annual Consumption (EAC) list having the same effective_from and TPR. possible_errors: - repeated_eac_for_tpr et_in_progress: type: boolean nullable: true description:

Whether an erroneous transfer (ER) is in progress for this meter point. This should be resolved before importing the account, and a validation error will be raised if this field is set to true.

x-validators: - name: Validate that no erroneous transfers are in progress description: The validation process will be stopped if an erroneous transfer is in progress. possible_errors: - erroneous_transfer_not_in_progress export_type: enum: - IMPORT_EXPORT - EXPORT_ONLY type: string x-spec-enum-id: ca63b70bc9ac9491 description: "

If the meter point is an export meter point, this value indicates whether the meters belonging to it are only used for export or for import as well. If the meter point is not an export meter point, this value should not be provided.

\n

If the meter point contains export-only meters, its export type should be set to EXPORT_ONLY. For import/export meters, it should be set to IMPORT_EXPORT, and the import meters should be provided separately in the payload with the same serial number but belonging to a different meter point (and with no export type provided).

" x-enum-descriptions: IMPORT_EXPORT: Import/Export EXPORT_ONLY: Export-only identifier: type: string description:

The unique identifier for the supply point.

x-validators: - name: Validate the supply point identifier description: Validate that the supply point identifier in the payload is valid for the territory that the account is importing in. possible_errors: - invalid_supply_point_identifier is_deenergised: type: boolean default: false description:

Whether the meter point is de-energised or not.

last_billed_to_date: type: string format: date description:

Date up to which consumption has been billed on the supply point.

If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.

If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.

This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.

measurement_class: enum: - A - B - C - D - E - F - G type: string x-spec-enum-id: d279209a7fa1219b description:

The measurement class of the meter point. The possible values below are defined by the Elexon Market Domain Data. This must be provided for unmetered meter points.

x-enum-descriptions: A: A B: B C: C D: D E: E F: F G: G meters: type: array items: $ref: '#/components/schemas/ElectricityMeter' description:

A list of active and exchanged meters on the meter point.

x-validators: - name: No repeated meter register IDs description: Validate that a meter does not have multiple registers with the same ID. possible_errors: - meter_with_duplicate_register_ids mop_to_appoint: type: string nullable: true description:

The meter operator (MOP) to appoint for the meter point. This value should only be provided for an on-market switch.

deprecated: true x-use-instead: agents.mop_contract maxLength: 4 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 mpid: type: string description:

The Market Participant ID (MPID) for this meter point.

maxLength: 4 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 profile_class: type: integer description:

The profile class of the meter point.

regular_reading_cycle: enum: - A - B - D - E - H - M - N - O - Q - S - T - W - Z type: string x-spec-enum-id: fdf55b5eb17f9d9f description:

The regular reading cycle of the meter point, as it should be passed to agents via flows.

x-enum-descriptions: A: Annual B: Bi-monthly D: Daily E: 18-monthly H: Half-monthly M: Monthly N: No read required O: Other Q: Quarterly S: 6-monthly T: Every 28 days W: Weekly Z: 24-monthly smart_refusal_interest: allOf: - $ref: '#/components/schemas/EnergySmartRefusalInterest' description:

Details on the customer's interest in installing a smart meter for this meter point.

smart_site_visit: type: array items: $ref: '#/components/schemas/EnergySmartSiteVisit' description:

A list of site visit appointments for installing a smart meter for the meter point.

ssc: type: string description:

The Standard Settlement Configuration (SSC) of the meter point.

supply_end_date: type: string format: date nullable: true description:

The supply start date for this meter point. See supply_periods as an alternative.

supply_start_date: type: string format: date description:

The supply end date for this meter point. See supply_periods as an alternative.

vat_exemptions: type: array items: $ref: '#/components/schemas/EnergyTaxExemption' description:

A list of VAT exemptions for the meter point. Must only be provided for business accounts.

x-validators: - name: Validate tax exemption end dates description: Validate that there is only one open ended tax exemption. possible_errors: - multiple_open_ended_tax_exemptions - name: Validate no overlapping tax exemptions description: Validate any tax exemptions are not overlapping. possible_errors: - overlapping_effective_dates_for_tax_exemptions required: - identifier - mpid - supply_start_date - supply_type x-validators: - name: Validate ⁨supply_end_date⁩ not before ⁨supply_start_date⁩ description: Validates that ⁨supply_end_date⁩, if given, is on or later than ⁨supply_start_date⁩. 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 contract_reference, service_reference and service_level_reference 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 agents field or a combination of dc_to_appoint, da_to_appoint and mop_to_appoint are not provided together. possible_errors: - agents_and_mpids_to_appoint_provided ElectricityRegister: type: object properties: is_settlement: type: boolean description:

Whether the register should be used for billing, and so whether it needs a transfer read, an EAC and a last billed to date.

last_billed_to_date: type: string format: date description: "

The date up to which consumption has been billed for this register. This does not need to be provided if a value for the account-level last_billed_to_date is provided, or if the meter is not on supply.

\n

For more information, see the documentation for the account-level last_billed_to_date field.

" number_of_digits: type: integer maximum: 15 minimum: 1 description:

The number of digits of the register.

register_id: type: string description:

The register identifier as provided in MTDs, including leading zeros.

maxLength: 32 tpr: type: string description:

The Time Pattern Regime code for the register.

x-validators: - name: Validate TPR exists description: Validate that the passed TPR exists in Market Domain data. possible_errors: - tpr_not_found required: - number_of_digits - register_id EnergyAccount: type: object properties: account_billing_options: allOf: - $ref: '#/components/schemas/EnergyAccountBillingOptions' description: data-import--field-definition--main-ledger-billing-account--account-billing-options--html account_campaigns: type: array items: $ref: '#/components/schemas/AccountCampaign' description:

List of campaigns to be added to an account. Campaigns allow accounts to be grouped, essentially tagging them for easy identification.

x-validators: - name: Validate account campaigns have consistent identifier description: Validate that account campaigns are consistently identified by either name or slug. possible_errors: - inconsistent_campaign_identifiers - name: Validate account campaign names are unique description: Validate that the account campaign names provided in the payload are unique. possible_errors: - duplicate_account_campaigns account_type: enum: - DOMESTIC - BUSINESS - MANAGED - PORTFOLIO_LEAD - DOMESTIC_VACANT - BUSINESS_VACANT - DOMESTIC_OCCUPIER - BUSINESS_OCCUPIER - SYSTEM - DOMESTIC_THIRD_PARTY_BILLED - BUSINESS_THIRD_PARTY_BILLED type: string x-spec-enum-id: e661470f8d62795b description:

The type of account to be created.

x-enum-descriptions: DOMESTIC: Domestic BUSINESS: Business MANAGED: Managed PORTFOLIO_LEAD: Portfolio Lead DOMESTIC_VACANT: Domestic Vacant BUSINESS_VACANT: Business Vacant DOMESTIC_OCCUPIER: Domestic Occupier BUSINESS_OCCUPIER: Business Occupier SYSTEM: System DOMESTIC_THIRD_PARTY_BILLED: Domestic Third Party Billed BUSINESS_THIRD_PARTY_BILLED: Business Third Party Billed affiliate_subdomain: type: string nullable: true description: '

Optional subdomain of the affiliate link to associate with the account.

If provided, the matching AffiliateLink record will be looked up case-insensitively and set on the account and account application. The affiliate organisation''s sales_channel and sales_subchannel will override any values supplied in the payload.

If the subdomain does not match any known affiliate link, the import will continue and a warning will be logged.

' billing_address: allOf: - $ref: '#/components/schemas/Address' description:

The billing address for the account. The payload can specify an address in this format or use the the billing_address1 etc fields, but not both.

billing_address1: type: string description:

Account billing address line 1.

maxLength: 512 billing_address2: type: string description:

Account billing address line 2.

maxLength: 512 billing_address3: type: string description:

Account billing address line 3.

maxLength: 512 billing_address4: type: string description:

Account billing address line 4.

maxLength: 512 billing_address5: type: string description:

Account billing address line 5.

maxLength: 512 billing_attention_of: type: string description:

Extra recipient information for when this account represents a large organisation (e.g. "The Bursar" or "Accounts Payable"). If provided, it will be used for producing statements.

maxLength: 256 billing_customer_reference: type: string description:

Customer-specified reference to use in communications (e.g. "Energy supply"). If provided, it will be used for producing statements.

maxLength: 256 billing_delivery_point_identifier: type: string description:

The postal delivery point identifier for this address. For GB addresses this will be the postcode (without the space) and Delivery Point Suffix, for AU addresses the Delivery Point Identifier, and for US addresses the full 11-digit Delivery Point code (without hyphens).

maxLength: 11 x-validators: - name: Validate delivery point identifier description: Validate that the delivery point identifier contains only capital letters and numbers. possible_errors: - invalid_delivery_point_identifier billing_email: type: string format: email nullable: true description:

If populated the bill/invoice communications will be emailed to this email address.

maxLength: 254 x-validators: - name: Validate email is not internal description: Validates that a customer email address does not use an internal Kraken handler. For example, if an instance of Kraken has registered info@kraken.info as an internal email address, then the customer email address must not match this. possible_errors: - internal_email_address - name: Validate 'blackhole+' is not in billing email description: Validates that billing email does not contain 'blackhole+'. possible_errors: - billing_email_not_valid billing_name: type: string description:

Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.

maxLength: 510 billing_postcode: type: string description:

Account billing address postcode.

maxLength: 512 x-validators: - name: Validate and normalize postcode description: Validate the postal code and normalize it to a standard format. possible_errors: - invalid_postcode billing_sub_name: type: string description:

Optional billing sub-name to be used on the account. Use this field if the name needs to be split into multiple lines. If provided, it will be used for producing statements.

maxLength: 256 business: allOf: - $ref: '#/components/schemas/Business' description:

Information about the business this account is related to.

business_type: enum: - SOLE_TRADER - LTD - PTY_LTD - PARTNERSHIP - CHARITY - PLC - LLP - TRUST - TRADING_AS - GOVERNMENT - NON_PROFIT - CHURCH - HOMEOWNER_ASSOCIATION - TBD - '' type: string x-spec-enum-id: 8cd3a9d2ed8d5378 description:

The type of business this account related to. The business type can only be provided for business accounts.

x-enum-descriptions: SOLE_TRADER: Sole trader LTD: Limited PTY_LTD: Proprietary Limited Company PARTNERSHIP: Partnership CHARITY: Charity PLC: Public limited company LLP: Limited liability partnership TRUST: Trust TRADING_AS: Trading as GOVERNMENT: Government NON_PROFIT: Non profit CHURCH: Church HOMEOWNER_ASSOCIATION: Homeowner association TBD: To be determined '': '' deprecated: true x-use-instead: business.business_type commission_contracts: type: array items: $ref: '#/components/schemas/EnergyCommissionContract' description:

List of commission contracts per meter point. These are contracts with Third Party Intermediaries (TPIs) that recieve a fee based on the commission type. For example, if the commission type is UNIT_RATE_UPLIFT then the value asssociated with this uplift will be paid to the TPI.

communication_preference: enum: - ONLINE - PRINT type: string x-spec-enum-id: 888267663b9129b6 default: ONLINE description:

The communication preference for this account. Defaults to ONLINE.

x-enum-descriptions: ONLINE: Online PRINT: Print company_number: type: string description:

The company number for a business account.

deprecated: true x-use-instead: business.company_number maxLength: 100 x-validators: - name: Validate company number description: Validate the company number and standardize its format. possible_errors: - invalid_company_number complaints: type: array items: $ref: '#/components/schemas/Complaint' description:

List of complaints associated with this account that have not yet been resolved.

consents: type: array items: $ref: '#/components/schemas/AccountConsent' description:

A list of what this account has and has not consented to. This field should be used for consents that apply to the entire account not just the customers linked to this account.

x-validators: - name: Validate consents are only provided if enabled description: Validate consents are only provided if enabled within this Kraken. possible_errors: - field_not_enabled - name: Validate that each child has unique values for the ⁨type⁩ field description: Validate that each child has unique values for the ⁨type⁩ field. possible_errors: - children_with_duplicate_values contribution_agreements: type: array items: $ref: '#/components/schemas/ContributionSchemeAgreement' description:

List of contribution agreements on the account. A contribution agreement is an agreement by an account to contribute a fixed sum on a regular cadence.

x-validators: - name: Validate contribution agreements do not overlap description: Validate that no contribution agreements of the same scheme overlap with each other. possible_errors: - overlapping_contribution_agreements current_statement_transactions: type: array items: $ref: '#/components/schemas/EnergyTransaction' description:

Transactions that are meant to be billed by Kraken.

These could be the transactions that took place after the last statement was issued or all of the transactions that have taken place since the account was created if it has never been billed.

Their value, plus the last_statement_balance, must add up to the transfer_balance.

customers: type: array items: $ref: '#/components/schemas/EnergyCustomer' description:

List of the account customers associated with the account.

x-validators: - name: Validate that the customers provided do not have the same value for any unique detail namespaces description: Validate that the customers provided do not have the same value for any of the following unique detail namespaces ⁨external_user_id⁩ possible_errors: - repeated_values_for_unique_customer_detail_namespace date_of_sale: type: string format: date description:

Date the account was signed up.

dd_reference: type: string description:

Reference to the currently active Direct Debit Instruction on the account.

deprecated: true x-use-instead: payment_instructions.reference maxLength: 512 debt: allOf: - $ref: '#/components/schemas/Debt' description:

Object containing information about debt on the account.

deprecated: true x-use-instead: debts debts: type: array items: $ref: '#/components/schemas/Debt' description:

List of debts on the account.

deposit_agreements: type: array items: $ref: '#/components/schemas/DepositAgreement' description:

List of deposit agreements on the account. Currently only one deposit agreement can be migrated onto an account. Deposit agreements track how much we expect a customer to pay as a deposit and when they agreed to pay that deposit.

x-validators: - name: Validate deposit agreements description: Validate the maximum number of deposit agreements possible_errors: - multiple_active_deposits_not_allowed document_accessibility: enum: - LARGE_PRINT - BRAILLE - SPOKEN - '' type: string x-spec-enum-id: 524112fb2f6615a6 default: '' description:

The document accessibility preferences for this account.

x-enum-descriptions: LARGE_PRINT: Large print BRAILLE: Braille SPOKEN: Spoken '': '' dunning_path: allOf: - $ref: '#/components/schemas/DunningPath' description:

Object containing information about which dunning path this account should go onto.

x-validators: - name: Validate dunning path supported description: Validate that the dunning path passed in the payload is available for this Kraken instance. possible_errors: - dunning_path_not_found external_account_number: type: string description:

Account number in the source system that the account is migrating from.

maxLength: 128 fit: allOf: - $ref: '#/components/schemas/EnergyFit' description:

Object describing any Feed-In-Tariff (FiT) installations related to this account.

historical_statement_transactions: type: array items: $ref: '#/components/schemas/EnergyTransaction' description:

Transactions that are not meant to be billed by Kraken.

If these are provided then they will appear on the initial closed statement on the account.

The sum of historic transactions must equal the last_statement_balance if it is provided.

If a value for last_statement_balance is not provided the it will be assumed this value is zero and the payload will likely fail validation.

import_supplier: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description:

The import supplier code that the account will be imported in to. The import supplier code will be provided to you.

x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA is_managed: type: boolean nullable: true description:

Whether the account is a managed account. This option is not available for all instances of Kraken. Defaults to false.

deprecated: true x-use-instead: account_type is_portfolio_lead: type: boolean nullable: true description:

Whether the account is a portfolio lead account. If this flag is selected, the payload MUST include either last_billed_to_date or last_statement_issue_date, and MUST NOT include any contracts or supply points. Additionally, the import config flags MUST include skip_meter_point_creation. It should be set to true. Talk to the tech team if you want to use this option.

deprecated: true x-use-instead: account_type language_preference: enum: - en-gb - en-us - es-419 - fr-fr type: string x-spec-enum-id: 12edf511757640b4 description:

The language preference for comms for this account.

x-enum-descriptions: en-gb: English (GB) en-us: English (US) es-419: Spanish (Latin America) fr-fr: French last_billed_to_date: type: string format: date description:

Date up to which consumption has been billed on the account.

For some markets this value can be provided at the supply point level if supply points have been billed to different points in time.

If the account has never been billed before, this should be the supply start date for the account and Kraken will bill from then.

This value is also used for the last_statement_closing_date and last_statement_issue_date where these values are not provided.

last_payment_review_date: type: string format: date nullable: true description:

Date in the past when the last payment review took place. If this is provided then payment_adequacy_changes must not be included in the payload. Providing this date will create a single payment adequacy change against the account for this date.

x-validators: - name: Validate last payment review date is not future dated description: Validate that the last payment review date is not later than today. possible_errors: - last_payment_review_date_is_future_dated last_statement_balance: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The balance of the latest statement issued by the previous supplier. Credit balances must be positive, debit balances must be negative.

deprecated: true x-use-instead: ledgers.last_statement_balance last_statement_closing_date: type: string format: date description:

Date when the last statement was closed.

Kraken will create an initial closed statement for all historical transactions, and will use this value for its closing date. This also means that Kraken will bill any transactions (but not necessarily consumption) from the day after this date.

For backwards compatibility, when this value is omitted the importer will tolerate either current or historical transactions (but not both!) being on the last_billed_to_date and adjust appropriately. However, if last_statement_closing_date is supplied, historical transactions can be on or before this date, but any current transactions must be strictly after this date.

deprecated: true x-use-instead: ledgers.last_statement_closing_date last_statement_issue_date: type: string format: date description:

Date when the last statement was issued. If this date is not given then the last_statement_closing_date will be used as the issue date of the initial statement.

deprecated: true x-use-instead: ledgers.last_statement_issue_date metadata: type: array items: $ref: '#/components/schemas/Metadata' description:

An array of key value pairs for storing generic metadata relating to an account. Metadata is externally focused and is not used for any logic within Kraken. Its main motivation is to provide a simple persistence mechanism for clients building their own integrations with Kraken. If a customer already exists in Kraken with existing metadata for the provided key, the value associated with this key will be overwritten.

next_bill_due_date: type: string format: date nullable: true description:

Date when the next bill is due on the account. This value is mandatory if use_industry_billing is set to false and period_length is QUARTERLY in the account_billing_options. This is in order that Kraken can calculate the billing schedule for this account.

notes: type: array items: $ref: '#/components/schemas/Note' description:

List of notes linked to the account. A note body or document_paths must be provided.

operations_team_name: type: string description:

The operations team name that this account should be assigned to on creation.

x-validators: - name: Validate that an operations team exists description: Validate that an operations team exists with the name provided. possible_errors: - operations_team_name_does_not_exist partner_organisations: type: array items: $ref: '#/components/schemas/PartnerOrganisation' description:

List of partner organisations.

payment_adequacy_changes: type: array items: $ref: '#/components/schemas/PaymentAdequacyChange' description:

List of completed payment adequacy reviews for this account. If this is provided then the last_payment_review_date must not be provided.

payment_instructions: type: array items: $ref: '#/components/schemas/PaymentInstruction' description: data-import--field-definition--main-ledger-billing-account--payment-instructions--html x-validators: - name: Validate uniformity of ledger code in payment instructions description: Validate that either all payment instructions have a ledger code or none have it. possible_errors: - payment_instructions_ledger_code_uniformity_failed payment_plans: type: array items: $ref: '#/components/schemas/PaymentPlan' description:

List of payment plans agreed with the customer.

payment_preferences: type: array items: $ref: '#/components/schemas/PaymentPreference' description:

List of payment preferences to create for the account.

payment_promises: type: array items: $ref: '#/components/schemas/PaymentPromise' description:

List of payments the customer has promised to pay at a future date.

payment_schedules: type: array items: $ref: '#/components/schemas/PaymentSchedule' description:

List of payment schedules linked to the account.

x-validators: - name: Validate uniformity of ledger code in payment schedules description: Validate that either all payment schedules have a ledger code or none have it. possible_errors: - payment_schedules_ledger_code_uniformity_failed - name: Validate that only one open-ended payment schedule is allowed within each ledger_code group description: Validate that within each ledger_code group, only one open-ended payment schedule that is not a debt repayment plan is provided in the payload. possible_errors: - multiple_open_ended_payment_schedules - name: Validate that payment schedules within each ledger_code group do not start on the same date description: Validate that multiple payment schedules within each ledger_code group, which are not debt repayment plans, do not start on the same date. possible_errors: - payment_schedule_date_overlaps - name: Validate that payment schedules do not overlap within each ledger_code group description: Validate that within each ledger_code group, payment schedules that are not debt repayment plans do not have overlapping dates. possible_errors: - payment_schedule_date_overlaps - name: Validate no gaps in future dated payment schedules description: Validate that where payment schedules in the payload start in the future, there are no gaps between those and the current schedule. For past payment schedules we don't care if there are gaps as these have no impact on payments going forward. This only applies to non-debt repayment plans. possible_errors: - payment_schedule_date_gaps portfolio: allOf: - $ref: '#/components/schemas/AccountPortfolio' nullable: true description:

Information about the portfolio the account belongs to.

references: type: array items: $ref: '#/components/schemas/AccountReference' description:

List of account references for the account. An example may be a secondary account number.

sales_channel: enum: - DIRECT - PRICE_COMPARISON - TELESALES - DIGI_TELESALES - EVENTS - FIELD_SALES - AGGREGATOR - PARTNERSHIPS - NEW_TENANT - MOVE_IN - WORKPLACE_POP_UP - BROKER - PARENT_POWER - PEOPLE_POWER - GIFT_OF_KIT - HIGH_REFERRER - SUPPLIER_OF_LAST_RESORT - ACQUISITION - WORKS_WITH_OCTOPUS - LANDLORD - DEBT_COLLECTION_AGENCY - '' type: string x-spec-enum-id: f4ccf4dcda60c174 default: DIRECT description: "

The sales channel to set on account when it's created. A default sales_channel can also be set on the import supplier - this is done by a member of the Kraken tech team when setting up an import supplier. These are the rules around how the sales channel gets assigned:

\n" x-enum-descriptions: DIRECT: Direct PRICE_COMPARISON: Price comparison TELESALES: Telesales DIGI_TELESALES: Digital telesales EVENTS: Events FIELD_SALES: Field sales AGGREGATOR: Aggregator PARTNERSHIPS: Partnerships NEW_TENANT: New tenant MOVE_IN: Move in WORKPLACE_POP_UP: Workplace pop-up BROKER: Broker PARENT_POWER: Parent power PEOPLE_POWER: People power GIFT_OF_KIT: Gift of kit HIGH_REFERRER: High referrer SUPPLIER_OF_LAST_RESORT: Supplier of last resort ACQUISITION: Acquisition WORKS_WITH_OCTOPUS: Works with octopus LANDLORD: Landlord DEBT_COLLECTION_AGENCY: Debt collection agency '': '' sales_subchannel: type: string description:

Free text to be used as sales information of the account.

If the import supplier is set to override the value in the payload, then the import supplier name will be used as the value for the sales_subchannel.

smart_read_cycle_day: type: integer description:

The smart meter billing day of the month. Values between 1 to 28.

x-validators: - name: Validate day of the month description: Validate that the day of the month is valid. possible_errors: - invalid_day_of_month smart_read_frequency: enum: - MONTHLY - DAILY - HALF_HOURLY - DENIED - '' type: string x-spec-enum-id: 73e0aece1cf9bde2 description:

The frequency at which smart meter readings are taken.

x-enum-descriptions: MONTHLY: MONTHLY DAILY: DAILY HALF_HOURLY: HALF_HOURLY DENIED: DENIED '': '' statements: type: array items: $ref: '#/components/schemas/Statement' description:

List of historical statements for the account.

supply_addresses: type: array items: $ref: '#/components/schemas/EnergyLegacySupplyAddress' description:

List of active supply addresses linked to the account.

x-validators: - name: Validate no duplicate meter points on different supply addresses description: Validate that there are no duplicate meter points (i.e. meter points with the same MPxN) across different supply addresses. possible_errors: - duplicate_meter_points_on_different_supply_addresses_provided - name: Validate that supply points are provided correctly based on the value of the 'Skip supply point creation' import config setting. description: Validate that if the value for 'Skip supply point creation' is True then supply points have not been provided, and if False that they have. possible_errors: - supply_points_provided_while_skip_supply_point_creation_enabled - supply_points_not_provided_while_skip_supply_point_creation_disabled - name: Validate that supply addresses are not provided if 'Skip property creation' is True description: Validate that if the value for 'Skip property creation' is True then supply addresses have not been provided possible_errors: - supply_addresses_provided_while_skip_property_creation_enabled - name: Validate no duplicate supply addresses description: Validate there are no duplicate supply addresses provided for an account payload. This uses the supply_address1, supply_address2 and supply_postcode fields of the address to identify uniqueness. possible_errors: - duplicate_supply_addresses_found - name: Validate meter exchange readings provided description: Validate that any exchanged meters provided have a reading on the date it was removed and have transfer readings. possible_errors: - no_reading_on_removed_on - no_transfer_reading_on_exchanged_meter - name: Validate that a last billed to date is provided for an exchanged meter description: Validate that, for an exchanged meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided either on each of the meter's settlement registers. For gas meters, it must be provided either on the meter. For a meter that is a replacement for an old one, the new meter should not have a last billed to date. possible_errors: - last_billed_to_date_on_new_meter - no_last_billed_to_date_on_exchanged_meter - name: Validate no loss in progress at supply address description: Validate that there is no loss in progress marked for a supply point for a supply address. A loss will be deemed in progress if a future-dated supply_end_date is provided on the supply point. possible_errors: - loss_in_progress - name: Validate that no agents are provided when not sending registration flows description: Validate that if the send_registration_flows flag is set to false in the import configuration, then no agents are provided in the payload. Agent fields used for validation are da_to_appoint, dc_to_appoint, mop_to_appoint, and mam_to_appoint. possible_errors: - agents_supplied_for_non_on_market_switch - name: Validate that import-export meters have two meter points description: Ensure that if a meter is import-export, there are exactly two meter points with meters sharing the same meter serial number. Additionally, this ensures that only one of these meter points has type IMPORT_EXPORT. possible_errors: - import_meter_not_found_for_export_meter - name: Valdiate that only twin element meters have duplicate meter points description: Validate that only meters of the twin element type have duplicate meter points for import export meters. possible_errors: - unexpected_number_of_meter_points_found_for_meter - name: Validate that there are no billed readings after the last_billed_to_date description: Validate that there are no billed readings after the last_billed_to_date, if such a date is provided. The last_billed_to_date can be either at the meter level for gas or the at the register level for electricity. possible_errors: - billed_reading_after_last_billed_to_date - name: Validate all transfer reading dates match last billed to date description: Validate that all transfer reading dates match the last billed to date. 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: - transfer_reading_dates_must_match_last_billed_to_date transfer_balance: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The balance that will be transferred over to Kraken. Credit balances must be positive, debit balances must be negative.

unknown_occupier: type: boolean nullable: true description:

Whether the account belongs to an unknown occupier. If true then no customers should be provided in the payload.

warm_home_discount: type: array items: $ref: '#/components/schemas/EnergyWarmHomeDiscount' description:

A list of warm home discount related data items top apply to this account.

required: - import_supplier x-validators: - 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 property_external_identifier is not repeated across supply_addresses and properties. 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 (billing_address1 etc.) and new-style billing address (billing_address 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 supply_start_date 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 start_date to maximum end_date. 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 supply_type field that there is a supply point in the payload with a matching supply_type. 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 account_contracts have been provided that a supply address with supply points has been provided under supply_addresses 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 billing_document_identifier description: Validate that none of the current statement transactions include a billing_document_identifier, 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 enforce_business_contracts_exist 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 business_contract_identifier, if provided, is one of the account's declared business_contract_identifiers. 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 ledger_balance provided for each ledger in ledgers equals the account-level transfer_balance. 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 ledger_identifier description: Ensure that the ledger_identifier provided has an equivalent ledger object with the same ledger_identifier . 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 ACTIVE_NEW payment preference description: Ensure that ACTIVE_NEW payment preference has instruction_identifier from payment_instructions 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 voucher charge_transaction_id has a matching transaction_id within a transaction of type CHARGE in current_statement_transactions, historical_statement_transactions or historical_billing_documents. 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 credit_transaction_id in all voucher_redemptions in every voucher has a matching transaction_id within a transaction of type CREDIT in current_statement_transactions, historical_statement_transactions or historical_billing_documents. possible_errors: - voucher_redemption_credit_transaction_id_not_found - name: Validate parent property references exist description: Validates that all parent_property_reference values in supply_addresses and properties correspond to a property_external_identifier 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 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 historical_statement_transactions are provided in the payload then either a last_statement_closing_date or last_billed_to_date is also provided. If a last_statement_closing_date is not provided then the earliest last_billed_to_date 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 historical_statement_transactions are provided then none are later than the last_statement_closing_date. If a last_statement_closing_date is not provided then this is inferred from the earliest last_billed_to_date 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 last_statement_issue_date, if given, is on or after the last_statement_closing_date given. If a last_statement_closing_date is not provided then this is inferred from the earliest last_billed_to_date 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 payment_adequacy_changes or last_payment_review_date 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 dd_reference is provided for the account. If a dd_reference 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 current_statement_transactions, 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 last_statement_balance plus/minus current_statement_transactions equal transfer_balance description: Validate that the sum of current_statement_transactions plus the last_statement_balance is equal to the transfer_balance. For example, if a last_statement_balance of 100 is provided, and the current_statement_transactions include one payment of 50, then the expected transfer_balance 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 to_prepay_meter_serial_number 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 historical_statement_transactions equals the last_statement_balance. Prepay transactions (those with the to_prepay_meter_serial_number 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 use_industry_billing is false in the account billing options and the period_length is QUARTERLY, then a next_bill_due_date 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 current_statement_transactions or historical_statement_transactions target a prepay meter (i.e. has the to_prepay_meter_serial_number 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 prepay_details. 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 billing_address1 and billing_postcode 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 eac_history array for each active electricity register. EACs are matched to registers using the tpr 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 effective_from 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 REGOS_EXPORT_CERTIFICATES or ROCS_EXPORT_CERTIFICATES which are business only supply types. possible_errors: - business_supply_type_on_domestic_account - name: Validate business account has account billing options with period_start_day and period_length description: Validate that business account's account_billing_options include period start day and period length if account_billing_options is being provided. If account_billing_options is not provided then the defaults of 1 for period_start_day and "MONTHLY" for period_length 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 last_billed_to_date description: Validate that there are no current statement transactions that occurred before the last_billed_to_date (this includes the supply point-level last_billed_to_date, 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 EnergyAccountBillingOptions: type: object properties: period_length: enum: - MONTHLY - QUARTERLY - null type: string x-spec-enum-id: 8c93f45b27bbc5df nullable: true description:

The length of the billing period.

x-enum-descriptions: MONTHLY: Monthly QUARTERLY: Quarterly None: None period_length_multiplier: type: integer description:

The multiplier for the billing period length. The period length gets multiplied by this value to get a variation of the period length for fixed billing. E.g. If the period length is monthly and the multiplier is 2, the account will be billed every 2 months.

period_start_day: type: integer maximum: 28 minimum: 1 nullable: true description:

The day of the month on which the billing period starts.

period_start_month: type: integer maximum: 12 minimum: 1 nullable: true description:

The month in which the billing period starts.

use_industry_billing: type: boolean description:

Whether Kraken should rely on industry data to trigger billing or (if false) it should trigger it itself.

x-validators: - name: Validate industry billing or period provided description: Validates that either industry billing is being used or the billing period start day and length is being provided. possible_errors: - account_billing_options_industry_billing_with_period_data - account_billing_options_period_data_required EnergyAddress: type: object properties: county: type: string description:

The county for the FiT installation.

line1: type: string description:

The first line of the address for the FiT installation.

line2: type: string description:

The second line of the address for the FiT installation.

postcode: type: string description:

The postcode for the FiT installation.

x-validators: - name: Validate and normalize postcode description: Validate the postal code and normalize it to a standard format. possible_errors: - invalid_postcode town: type: string description:

The town for the FiT installation.

required: - line1 - postcode EnergyCharge: type: object properties: type: enum: - CHARGE - PAYMENT - REPAYMENT - CREDIT - SUPPLY_CHARGE type: string x-spec-enum-id: 06d6aba5cee32f9a description:

The type of the transaction.

x-enum-descriptions: CHARGE: Charge PAYMENT: Payment REPAYMENT: Repayment CREDIT: Credit SUPPLY_CHARGE: Supply Charge amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type CHARGE of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

billing_document_identifier: type: string description:

The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER settings is ON and is meant for only historical_statements_transactions. Passing this to other transactions like current_statement_transactions or transactions_in_open_settlement_period will raise validation error.

display_note: type: string description:

The customer-facing note that can be displayed in a statement or email to the customer.

note: type: string description:

Any additional notes about the transaction.

reason: enum: - DEFAULT - BALANCE_TRANSFER - CONTRIBUTION_TAX_FREE - DATA_IMPORT_BALANCE_TRANSFER - DEPOSIT - BALANCE_TRANSFER_FOR_FINAL_BILLED_ACCOUNT - IMPORTED_CHARGE - SUPPLEMENTARY_LEDGER_BALANCE_TRANSFER - REVERSED_ACCOUNT_CREDIT - LATE_PAYMENT_FEE_CHARGE - PREPAY_BALANCE_ADJUSTMENT - PREPAY_IMBALANCE_WRITE_OFF - PREPAY_MIGRATION_IMBALANCE - AC_ADJUSTMENT - ADJUSTED_CREDIT_TO_ALLOW_REFUND - AUTO_RECONCILIATION - BUSINESS_ADVANCE_PAYMENT - BUSINESS_PREPAYMENT - CARBON_OFFSET - CREDIT_BALANCE_DONATED_TO_CHARITY - DCA_CHARGE - DEBT_ASSIGNMENT_GAINING_SUPPLIER - DIRECT_DEBIT_REFUND_BALANCING - FEED_IN_TARIFF_PAYMENT_TRANSFER_TO_NOMINATED_RECIPIENT - GREEN_DEAL_CHARGE - INCORRECT_PAYMENT_REVERSAL - METERING_JOB_BUSINESS - METERING_JOB_NATIONAL_GRID - METERING_JOB_SMS - NEST_LEARNING_THERMOSTAT_RENTAL - OUTGOING_BALANCE_TRANSFER - OVER_THE_COUNTER_PAYMENT_FEE - PAPER_BILL_FEE - PENALTY_CHARGE - PREPAY_DEBT_ADJUSTMENT - REASON_EARLY_EXIT_FEE - REFUND - SERVICE_ORDER - SOLR_BALANCE_TRANSFER - WATER - WRITE_BACK - EBSS_CHARGE_REVERSAL - LATE_PAYMENT_FEE - RPS_INVESTIGATION_CHARGE - RPS_WARRANT_CHARGE - RPS_DAMAGE - RPS_RESEAL_FEE - SAP_MIGRATED_DEBITS - ADDITIONAL_CHARGES_0 - ADDITIONAL_CHARGES_20 - ADDITIONAL_CHARGES_5 - RECONNECTION_CHARGE - GREENDEALCHARGE - OPUS_FINAL_BALANCE_TRANSFER - REASON_EARLY_EXIT_FEE_5 - TEMP_REFUND - MIGRATION_ADJUSTMENT - WELFARE_VISIT_FEE - WARRANT_FEES_COSTS - WARRANT_EXECUTION_FEE - TERM_DCA_FEE - POST_OFFICE_PAYMENT_CORRECTION - RPS_LOSS_5 - RPS_ADJUSTMENT_20 - RPS_CCL_ADJUSTMENT - METERING_APPOINTMENT_FAILURE - REASON_EARLY_EXIT_FEE_0 - PAYMENT_CORRECTION - OPUS_FINAL_BALANCE_ADJUSTMENT - LATE_PAYMENT_RESI - LATE_PAYMENT_SME - EARLY_TERMINATION_FEE - TRANSFERRED_DEBT_BILL_ADJUSTMENT - INDEMNITY_CLAIM - SAP_WRITE_OFF_RECOVER - DEBTSOLD_PAYMENTREVERSAL - CHAPS_REFUND type: string x-spec-enum-id: dce8c95be7b5e343 description:

The reason for the transaction.

x-enum-descriptions: DEFAULT: DEFAULT BALANCE_TRANSFER: BALANCE_TRANSFER CONTRIBUTION_TAX_FREE: CONTRIBUTION_TAX_FREE DATA_IMPORT_BALANCE_TRANSFER: DATA_IMPORT_BALANCE_TRANSFER DEPOSIT: DEPOSIT BALANCE_TRANSFER_FOR_FINAL_BILLED_ACCOUNT: BALANCE_TRANSFER_FOR_FINAL_BILLED_ACCOUNT IMPORTED_CHARGE: IMPORTED_CHARGE SUPPLEMENTARY_LEDGER_BALANCE_TRANSFER: SUPPLEMENTARY_LEDGER_BALANCE_TRANSFER REVERSED_ACCOUNT_CREDIT: REVERSED_ACCOUNT_CREDIT LATE_PAYMENT_FEE_CHARGE: LATE_PAYMENT_FEE_CHARGE PREPAY_BALANCE_ADJUSTMENT: PREPAY_BALANCE_ADJUSTMENT PREPAY_IMBALANCE_WRITE_OFF: PREPAY_IMBALANCE_WRITE_OFF PREPAY_MIGRATION_IMBALANCE: PREPAY_MIGRATION_IMBALANCE AC_ADJUSTMENT: AC_ADJUSTMENT ADJUSTED_CREDIT_TO_ALLOW_REFUND: ADJUSTED_CREDIT_TO_ALLOW_REFUND AUTO_RECONCILIATION: AUTO_RECONCILIATION BUSINESS_ADVANCE_PAYMENT: BUSINESS_ADVANCE_PAYMENT BUSINESS_PREPAYMENT: BUSINESS_PREPAYMENT CARBON_OFFSET: CARBON_OFFSET CREDIT_BALANCE_DONATED_TO_CHARITY: CREDIT_BALANCE_DONATED_TO_CHARITY DCA_CHARGE: DCA_CHARGE DEBT_ASSIGNMENT_GAINING_SUPPLIER: DEBT_ASSIGNMENT_GAINING_SUPPLIER DIRECT_DEBIT_REFUND_BALANCING: DIRECT_DEBIT_REFUND_BALANCING FEED_IN_TARIFF_PAYMENT_TRANSFER_TO_NOMINATED_RECIPIENT: FEED_IN_TARIFF_PAYMENT_TRANSFER_TO_NOMINATED_RECIPIENT GREEN_DEAL_CHARGE: GREEN_DEAL_CHARGE INCORRECT_PAYMENT_REVERSAL: INCORRECT_PAYMENT_REVERSAL METERING_JOB_BUSINESS: METERING_JOB_BUSINESS METERING_JOB_NATIONAL_GRID: METERING_JOB_NATIONAL_GRID METERING_JOB_SMS: METERING_JOB_SMS NEST_LEARNING_THERMOSTAT_RENTAL: NEST_LEARNING_THERMOSTAT_RENTAL OUTGOING_BALANCE_TRANSFER: OUTGOING_BALANCE_TRANSFER OVER_THE_COUNTER_PAYMENT_FEE: OVER_THE_COUNTER_PAYMENT_FEE PAPER_BILL_FEE: PAPER_BILL_FEE PENALTY_CHARGE: PENALTY_CHARGE PREPAY_DEBT_ADJUSTMENT: PREPAY_DEBT_ADJUSTMENT REASON_EARLY_EXIT_FEE: REASON_EARLY_EXIT_FEE REFUND: REFUND SERVICE_ORDER: SERVICE_ORDER SOLR_BALANCE_TRANSFER: SOLR_BALANCE_TRANSFER WATER: WATER WRITE_BACK: WRITE_BACK EBSS_CHARGE_REVERSAL: EBSS_CHARGE_REVERSAL LATE_PAYMENT_FEE: LATE_PAYMENT_FEE RPS_INVESTIGATION_CHARGE: RPS_INVESTIGATION_CHARGE RPS_WARRANT_CHARGE: RPS_WARRANT_CHARGE RPS_DAMAGE: RPS_DAMAGE RPS_RESEAL_FEE: RPS_RESEAL_FEE SAP_MIGRATED_DEBITS: SAP_MIGRATED_DEBITS ADDITIONAL_CHARGES_0: ADDITIONAL_CHARGES_0 ADDITIONAL_CHARGES_20: ADDITIONAL_CHARGES_20 ADDITIONAL_CHARGES_5: ADDITIONAL_CHARGES_5 RECONNECTION_CHARGE: RECONNECTION_CHARGE GREENDEALCHARGE: GREENDEALCHARGE OPUS_FINAL_BALANCE_TRANSFER: OPUS_FINAL_BALANCE_TRANSFER REASON_EARLY_EXIT_FEE_5: REASON_EARLY_EXIT_FEE_5 TEMP_REFUND: TEMP_REFUND MIGRATION_ADJUSTMENT: MIGRATION_ADJUSTMENT WELFARE_VISIT_FEE: WELFARE_VISIT_FEE WARRANT_FEES_COSTS: WARRANT_FEES_COSTS WARRANT_EXECUTION_FEE: WARRANT_EXECUTION_FEE TERM_DCA_FEE: TERM_DCA_FEE POST_OFFICE_PAYMENT_CORRECTION: POST_OFFICE_PAYMENT_CORRECTION RPS_LOSS_5: RPS_LOSS_5 RPS_ADJUSTMENT_20: RPS_ADJUSTMENT_20 RPS_CCL_ADJUSTMENT: RPS_CCL_ADJUSTMENT METERING_APPOINTMENT_FAILURE: METERING_APPOINTMENT_FAILURE REASON_EARLY_EXIT_FEE_0: REASON_EARLY_EXIT_FEE_0 PAYMENT_CORRECTION: PAYMENT_CORRECTION OPUS_FINAL_BALANCE_ADJUSTMENT: OPUS_FINAL_BALANCE_ADJUSTMENT LATE_PAYMENT_RESI: LATE_PAYMENT_RESI LATE_PAYMENT_SME: LATE_PAYMENT_SME EARLY_TERMINATION_FEE: EARLY_TERMINATION_FEE TRANSFERRED_DEBT_BILL_ADJUSTMENT: TRANSFERRED_DEBT_BILL_ADJUSTMENT INDEMNITY_CLAIM: INDEMNITY_CLAIM SAP_WRITE_OFF_RECOVER: SAP_WRITE_OFF_RECOVER DEBTSOLD_PAYMENTREVERSAL: DEBTSOLD_PAYMENTREVERSAL CHAPS_REFUND: CHAPS_REFUND tax_items: type: array items: $ref: '#/components/schemas/TaxItem' description:

For SUPPLY_CHARGE and CHARGE transactions only, tax items contain details about the tax. If not provided will be set to default zero tax.

to_prepay_meter_serial_number: type: string description: "

The serial number of the prepay meter that this transaction has been \"sent to\" (via a PPMIP).

\n

In the case of prepay vends, this \"sending\" was carried out by the customer paying\n at an outlet; as such, this field should always be populated for prepay vend transactions.

\n

In the case of credits and non-consumption charges applied to the customer's account\n pre-migration, this field should be populated only where a request to add the corresponding\n credit or debt to the prepay meter has been sent and accepted by the PPMIP.

" transaction_date: type: string format: date description:

The date of the transaction.

x-validators: - name: Validate transaction date description: Validates that the transaction date provided in the payload is not in the future. possible_errors: - transaction_in_future transaction_id: type: string description:

The unique internal identifier for the transaction.

required: - amount - reason - transaction_date - transaction_id - type EnergyCommissionContract: type: object properties: affiliate_organisation_name: type: string description:

The affiliate organisation which is paid the unit rate uplift for this agreement.

maxLength: 128 x-validators: - name: Validate affiliate organisation exists description: Validate that an affiliate organisation exists in Kraken for the given name. possible_errors: - affiliate_organisation_does_not_exist commission_type: enum: - UNIT_RATE_UPLIFT type: string x-spec-enum-id: 59b6d636776e7013 description:

The type of commission this contract relates to. Defaults to UNIT_RATE_UPLIFT

x-enum-descriptions: UNIT_RATE_UPLIFT: Unit rate uplift deprecated: true effective_from: type: string format: date description:

Date the contract is valid from (inclusive).

effective_to: type: string format: date description:

Date the contract is valid to (exclusive).

mpxn: type: string description:

The MPAN or MPRN of the meter point tha this contract relates to.

x-validators: - name: Validate the supply point identifier description: Validate that the supply point identifier in the payload is valid for the territory that the account is importing in. possible_errors: - invalid_supply_point_identifier standing_charge_uplift: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,3})?$ description:

The amount to be added to the standing charge as commission (pence per day).

status: enum: - PAID - PAYABLE type: string x-spec-enum-id: ce8f4e4da84f292a description:

Whether a contract is fully paid up or still needs payment (is payable).

x-enum-descriptions: PAID: Commission fully paid PAYABLE: Commission contract can be paid unit_rate_uplift: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,3})?$ description:

The amount to be added to the unit rate as commission (pence per kWh).

value: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,2})?$ description:

The value of the commission (e.g. unit rate uplift) in pence.

deprecated: true x-use-instead: unit_rate_uplift required: - affiliate_organisation_name - effective_from - effective_to - mpxn - status x-validators: - name: data-import--validation--commission-uplift-validation-for-contract--display-name description: data-import--validation--commission-uplift-validation-for-contract--help-text possible_errors: - commission_type_requires_value - uplift_and_value_conflict - name: Validate ⁨effective_to⁩ not before ⁨effective_from⁩ description: Validates that ⁨effective_to⁩, if given, is on or later than ⁨effective_from⁩. possible_errors: - start_date_later_than_end_date EnergyCredit: type: object properties: type: enum: - CHARGE - PAYMENT - REPAYMENT - CREDIT - SUPPLY_CHARGE type: string x-spec-enum-id: 06d6aba5cee32f9a description:

The type of the transaction.

x-enum-descriptions: CHARGE: Charge PAYMENT: Payment REPAYMENT: Repayment CREDIT: Credit SUPPLY_CHARGE: Supply Charge amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type CHARGE of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

billing_document_identifier: type: string description:

The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER settings is ON and is meant for only historical_statements_transactions. Passing this to other transactions like current_statement_transactions or transactions_in_open_settlement_period will raise validation error.

display_note: type: string description:

The customer-facing note that can be displayed in a statement or email to the customer.

note: type: string description:

Any additional notes about the transaction.

reason: enum: - BALANCE_ADJUSTMENT - BALANCE_TRANSFER - BANK_TRANSFER - CONTRIBUTION_TAX_FREE - CUSTOMER_SERVICE_GESTURE - DEPOSIT - DIRECT_DEBIT_DISCOUNT - JOINING_REWARD - LOYALTY_REWARD - REVERSED_ACCOUNT_CHARGE - CUSTOMER_REIMBURSEMENT - DATA_IMPORT_BALANCE_TRANSFER - DEBIT_BALANCE_TRANSFER - GOODWILL_PAYMENT - IMPORTED_CREDIT - SUPPLEMENTARY_LEDGER_BALANCE_TRANSFER - WRITE_OFF_PAST_BILLABLE_AUTOMATED - WRITE_OFF_BACK_BILLING - WRITE_OFF_NEGLIGIBLE_VALUE - WRITE_OFF_UNRECOVERABLE_DEBT - WRITE_OFF_PAST_BILLABLE - WRITE_OFF_RECOVERY_DISCOUNT - WRITE_OFF_BANKRUPTCY - WRITE_OFF_DRO - WRITE_OFF_IVA - WRITE_OFF_DECEASED - WRITE_OFF_MISSED_PAYMENT_DELETION - UNLIKELY_TO_RECOVER_WRITE_OFF - REFERRING_ACCOUNT_REFERRAL_REWARD - REFERRED_ACCOUNT_REFERRAL_REWARD - PREPAY_BALANCE_ADJUSTMENT - PREPAY_IMBALANCE_WRITE_OFF - PREPAY_MIGRATION_IMBALANCE - ACCURACY_TEST_ADJUSTMENT - ADDITIONAL_SOP_PAYMENT_APPOINTMENTS - ADDITIONAL_SOP_PAYMENT_CUSTOMER_NOT_RETURNED - ADDITIONAL_SOP_PAYMENT_ELECTRICITY_SWITCH_DELAYED - ADDITIONAL_SOP_PAYMENT_ERRONEOUS_TRANSFER - ADDITIONAL_SOP_PAYMENT_ET_COMMS_OVERDUE - ADDITIONAL_SOP_PAYMENT_ET_GAIN_ACCEPTED - ADDITIONAL_SOP_PAYMENT_ET_GAIN_UNRESOLVED - ADDITIONAL_SOP_PAYMENT_ET_LOSS_UNRESOLVED - ADDITIONAL_STANDARD_PAYMENT - ADJUSTED_CREDIT_TO_ALLOW_REFUND - ADJUSTMENT_ON_RETURNED_DEPOSIT - BALANCE_TRANSFER_FOR_FINAL_BILLED_ACCOUNT - CHEQUE_PAYMENT_RECEIVED - CLOSED_REVERSION - DEBT_ASSIGNMENT_LOSING_SUPPLIER - DEPOSIT_REFUND - DIRECT_DEBIT_BANK_CHARGE_MAY - DISC_WARM_HOME_DISCOUNT - DISPUTED_CARD_PAYMENTS - ECONOMY_7_DIFFERENCE - ERRONEOUS_TRANSFER_REFUND - EXIT_FEE_REFUND - EXPORT_TARIFF_PAYMENT - EXTERNAL_REFERRAL_CREDIT - FEED_IN_TARIFF_PAYMENT - GO_CARDLESS_CHARGEBACK_CANCELLED - GSS_AFFECT - GSS_FAILURE - GSS_FAILURE_MOP - HONOURED_BANK_CHARGES - INCOMING_PAYMENT_GO_CARDLESS - MANAGEMENT_WAIVED_FEES - MARKET_RESEARCH_CLUB_REWARD - MISSED_SAVINGS - OFFSET - PAYMENT_BANK_ACCOUNT - PAYMENT_BPAY - PAYMENT_CENTREPAY - PAYMENT_CHEQUE - PAYMENT_CREDIT_CARD - PAYMENT_TRANSFER_FROM_SAP - PREPAY_DEBT_ADJUSTMENT - QLD_ASSET_OWNERSHIP_DIVIDEND - RECEIVED_VIA_CREDIT_STYLE - REFERRALCANDY_INCENTIVE - REINSTATED_DIRECT_DEBIT - RETURNED_BUSINESS_ADVANCE_PAYMENT - RETURNED_BUSINESS_PREPAYMENT - REVERSE_ENERGY_CHARGE - REVERSIONED_POST_DD_CANX - SALES_COMPENSATION - SHARE_OF_PROFITS - SINGLE_RATE_RMI - SME_REVERSED_PRE_MIGRATION_CHARGE - SOLAR_GOODWILL - SOLR_BALANCE_TRANSFER - SOLR_EX_CUSTOMER_CREDIT - SOLR_WRITE_OFF - STAFF_DISCOUNT - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_FAULTY_METER_ELEC - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_PREPAY_METER_ELEC - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_RECONNECTION_ELEC - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_STANDARD_VISIT_ELEC - STANDARDS_OF_PERFORMANCE_CUSTOMER_NOT_RETURNED - STANDARDS_OF_PERFORMANCE_ERRONEOUS_TRANSFER - STANDARDS_OF_PERFORMANCE_ET_COMMS_OVERDUE - STANDARDS_OF_PERFORMANCE_ET_GAIN_ACCEPTED - STANDARDS_OF_PERFORMANCE_ET_GAIN_UNRESOLVED - STANDARDS_OF_PERFORMANCE_ET_LOSS_UNRESOLVED - STANDARDS_OF_PERFORMANCE_FINAL_BILL_ISSUED_LATE - STANDARDS_OF_PERFORMANCE_PAYMENTS - STANDARDS_OF_PERFORMANCE_REFUND_ISSUED_LATE - TARIFF_DISCOUNT - TARIFF_PRICE_ADJUSTMENT_GOODWILL - WAIVE_TERMINATION_FEES - WITHDRAWAL_NOT_ACTIONED - EBSS_CREDIT - WARM_HOME_DISCOUNT_BROADER_GROUP - WARM_HOME_DISCOUNT_CORE_GROUP - WARM_HOME_DISCOUNT_CORE_GROUP_1 - WARM_HOME_DISCOUNT_CORE_GROUP_2 - ADDITIONAL_SOP_PAYMENT_GAS_SWITCH_DELAYED - GAS_NETWORK_COMPENSATION - GAS_OFF_SUPPLY_PAYMENT - GOVERNMENT_ENERGY_ASSISTANCE_HEEA - PAYMENT_AUSPOST - PAYMENT_EAPA_VOUCHER - PAYMENT_IVR - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_FAULTY_METER_GAS - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_PREPAY_METER_GAS - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_RECONNECTION_GAS - STANDARDS_OF_PERFORMANCE_APPOINTMENTS_STANDARD_VISIT_GAS - MIGRATION_ADJUSTMENT - BILL_ADJUSTMENT_0 - BILL_ADJUSTMENT_20 - BILL_ADJUSTMENT_5 - GOODWILL - DAILY_STANDING_CHARGE_ROLLBACK - CANCELLED_CHEQUE_RESI - CANCELLED_CHEQUE_SME - PREPAYMENT_ADDITIONAL_SUPPORT_CREDIT - WELFARE_VISIT_FEE_REVERSAL - WARRANT_FEES_COSTS_REVERSAL - WARRANT_EXECUTION_FEE_REVERSAL - MISDIRECTED_CREDIT_PAYMENT - MISSING_PREPAYMENT_TOP_UP - TERM_DCA_FEE_REVERSAL - HAMPTON_FUEL_PAYMENT - DEEMED_0_CONSUMPTION_WRITE_OFF - NET_ZERO_HERO_AWARD - STANDARD_OF_PERFORMANCE_ELEC_SWITCH_DELAY - STANDARD_OF_PERFORMANCE_GAS_SWITCH_DELAY - ADDITIONAL_SOP_FINAL_BILL_OVERDUE - EMAIL_PRIZE_DRAW - GREEN_DEAL - GREEN_DEAL_WRITE_OFF - GREEN_DEAL_BILL_ADJUSTMENT - OPUS_FINAL_BALANCE_TRANSFER - OPUS_FINAL_BALANCE_ADJUSTMENT - WARM_HOME_DISCOUNT_REBATE_5 - RECONNECTION_CHARGE_REV - DAP_LOSING_SUPPLIER_10 - DAP_LOSING_SUPPLIER_90 - LOYALTY_RETAIN - SUNDAY_SAVER - RMGEDF24 - SAP_MIGRATED_CREDITS - TESEDF24 - WHIEDF24 - VODEDF24 - NISEDF24 - EV_50_CREDIT - PLUG__POWER_300_CREDIT - PLUG__POWER_200_CREDIT - RENEWAL_CREDIT - EV_FLEX_SCHEME_CREDIT - REFER_A_FRIEND_5 - WRITE_OFF_UNRECOVERABLE_DEBT_RESI - INDEMNITY_CLAIM - VALENTINES_DAY - RIPPLE_ENERGY_CREDIT_RESI - RIPPLE_ENERGY_CREDIT_BUSINESS - RESQEDF25 - PREEDF25 - TRANSFERRED_DEBT_BILL_ADJUSTMENT - SBOFFERCREDIT - EVRI100 - OPUS_DEENERGISED_ADJUSTMENT - SMART_CHARGING_INCENTIVE - SMART_CHARGING_SAVING - FAFS_TERMED_ACCOUNT - PLUG__POWER_100_CREDIT - SETTLEMENT_LIVE_ACCOUNT - TENNIS_FINALS_CREDIT - SCHOOL_HOLIDAYS_CREDIT - CHRISTMAS_DAY_CREDIT - FREE_PHASE_FREE_ELECTRICITY - EARLY_RENEWAL_50_CREDIT - GOELECTRIC_130_OFFER - EXPORT_TARIFF_PAYMENT_RESI - REFER_A_FRIEND_NEW - DEBTSOLD_PAYMENTREVERSAL - BUPEDF25 - CARE_SUPPORT_SCHEME - UTILITA_TRANSFER - WELCOMEGAS1YEAR - UTILITA_FINAL_BALANCE_TRANSFER - WELCOMEGAS2YEAR - WELCOMEGAS3YEAR - WELCOMEGAS4YEAR - EARLY_RENEWAL_75_CREDIT - SUNDAY_SAVER__ERRONEOUS_MESSAGE_COMPENSATION - EV_SWITCH_BONUS_50 - SBNEWACQ1YEAR - SBNEWACQ2YEAR - SBNEWACQ3YEAR - SBNEWACQ4YEAR - SBNEWACQ100 - SBNEWACQ150 - SBNEWACQ175 - SBNEWACQ200 - LATE_PAYMENT_REVERSAL - OVERDALES_DEBT_WRITE_OFF - SBNEWACQFIX50 - SBNEWACQFIX150 - SBNEWACQFIX100 - SBNEWACQFIX175 - OFGEM_DEBT_RELIEF_SCHEME_GROUP_1 - SB_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING_20 - SB_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING_5_VAT - OFGEM_DEBT_RELIEF_SCHEME_GROUP_2 - SB_FREE_ENERGY - ADDITIONAL_SOP_FINAL_BILL_REFUND_OVERDUE - LOW_STANDING_CHARGE_TRIAL_GAS - LOW_STANDING_CHARGE_TRIAL_ELECTRICITY - NEWACQGAS200 - UUEDF26 - CHAPS_PAYMENT - FOOTBALL_CREDIT - RESI_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING - SBEXTRANEWACQ100 - SBEXTRANEWACQ150 - SBEXTRANEWACQ25 - SBEXTRANEWACQ50 - SBEXTRANEWACQ75 type: string x-spec-enum-id: abfe684544c12da5 description:

The reason for the transaction.

x-enum-descriptions: BALANCE_ADJUSTMENT: BALANCE_ADJUSTMENT BALANCE_TRANSFER: BALANCE_TRANSFER BANK_TRANSFER: BANK_TRANSFER CONTRIBUTION_TAX_FREE: CONTRIBUTION_TAX_FREE CUSTOMER_SERVICE_GESTURE: CUSTOMER_SERVICE_GESTURE DEPOSIT: DEPOSIT DIRECT_DEBIT_DISCOUNT: DIRECT_DEBIT_DISCOUNT JOINING_REWARD: JOINING_REWARD LOYALTY_REWARD: LOYALTY_REWARD REVERSED_ACCOUNT_CHARGE: REVERSED_ACCOUNT_CHARGE CUSTOMER_REIMBURSEMENT: CUSTOMER_REIMBURSEMENT DATA_IMPORT_BALANCE_TRANSFER: DATA_IMPORT_BALANCE_TRANSFER DEBIT_BALANCE_TRANSFER: DEBIT_BALANCE_TRANSFER GOODWILL_PAYMENT: GOODWILL_PAYMENT IMPORTED_CREDIT: IMPORTED_CREDIT SUPPLEMENTARY_LEDGER_BALANCE_TRANSFER: SUPPLEMENTARY_LEDGER_BALANCE_TRANSFER WRITE_OFF_PAST_BILLABLE_AUTOMATED: WRITE_OFF_PAST_BILLABLE_AUTOMATED WRITE_OFF_BACK_BILLING: WRITE_OFF_BACK_BILLING WRITE_OFF_NEGLIGIBLE_VALUE: WRITE_OFF_NEGLIGIBLE_VALUE WRITE_OFF_UNRECOVERABLE_DEBT: WRITE_OFF_UNRECOVERABLE_DEBT WRITE_OFF_PAST_BILLABLE: WRITE_OFF_PAST_BILLABLE WRITE_OFF_RECOVERY_DISCOUNT: WRITE_OFF_RECOVERY_DISCOUNT WRITE_OFF_BANKRUPTCY: WRITE_OFF_BANKRUPTCY WRITE_OFF_DRO: WRITE_OFF_DRO WRITE_OFF_IVA: WRITE_OFF_IVA WRITE_OFF_DECEASED: WRITE_OFF_DECEASED WRITE_OFF_MISSED_PAYMENT_DELETION: WRITE_OFF_MISSED_PAYMENT_DELETION UNLIKELY_TO_RECOVER_WRITE_OFF: UNLIKELY_TO_RECOVER_WRITE_OFF REFERRING_ACCOUNT_REFERRAL_REWARD: REFERRING_ACCOUNT_REFERRAL_REWARD REFERRED_ACCOUNT_REFERRAL_REWARD: REFERRED_ACCOUNT_REFERRAL_REWARD PREPAY_BALANCE_ADJUSTMENT: PREPAY_BALANCE_ADJUSTMENT PREPAY_IMBALANCE_WRITE_OFF: PREPAY_IMBALANCE_WRITE_OFF PREPAY_MIGRATION_IMBALANCE: PREPAY_MIGRATION_IMBALANCE ACCURACY_TEST_ADJUSTMENT: ACCURACY_TEST_ADJUSTMENT ADDITIONAL_SOP_PAYMENT_APPOINTMENTS: ADDITIONAL_SOP_PAYMENT_APPOINTMENTS ADDITIONAL_SOP_PAYMENT_CUSTOMER_NOT_RETURNED: ADDITIONAL_SOP_PAYMENT_CUSTOMER_NOT_RETURNED ADDITIONAL_SOP_PAYMENT_ELECTRICITY_SWITCH_DELAYED: ADDITIONAL_SOP_PAYMENT_ELECTRICITY_SWITCH_DELAYED ADDITIONAL_SOP_PAYMENT_ERRONEOUS_TRANSFER: ADDITIONAL_SOP_PAYMENT_ERRONEOUS_TRANSFER ADDITIONAL_SOP_PAYMENT_ET_COMMS_OVERDUE: ADDITIONAL_SOP_PAYMENT_ET_COMMS_OVERDUE ADDITIONAL_SOP_PAYMENT_ET_GAIN_ACCEPTED: ADDITIONAL_SOP_PAYMENT_ET_GAIN_ACCEPTED ADDITIONAL_SOP_PAYMENT_ET_GAIN_UNRESOLVED: ADDITIONAL_SOP_PAYMENT_ET_GAIN_UNRESOLVED ADDITIONAL_SOP_PAYMENT_ET_LOSS_UNRESOLVED: ADDITIONAL_SOP_PAYMENT_ET_LOSS_UNRESOLVED ADDITIONAL_STANDARD_PAYMENT: ADDITIONAL_STANDARD_PAYMENT ADJUSTED_CREDIT_TO_ALLOW_REFUND: ADJUSTED_CREDIT_TO_ALLOW_REFUND ADJUSTMENT_ON_RETURNED_DEPOSIT: ADJUSTMENT_ON_RETURNED_DEPOSIT BALANCE_TRANSFER_FOR_FINAL_BILLED_ACCOUNT: BALANCE_TRANSFER_FOR_FINAL_BILLED_ACCOUNT CHEQUE_PAYMENT_RECEIVED: CHEQUE_PAYMENT_RECEIVED CLOSED_REVERSION: CLOSED_REVERSION DEBT_ASSIGNMENT_LOSING_SUPPLIER: DEBT_ASSIGNMENT_LOSING_SUPPLIER DEPOSIT_REFUND: DEPOSIT_REFUND DIRECT_DEBIT_BANK_CHARGE_MAY: DIRECT_DEBIT_BANK_CHARGE_MAY DISC_WARM_HOME_DISCOUNT: DISC_WARM_HOME_DISCOUNT DISPUTED_CARD_PAYMENTS: DISPUTED_CARD_PAYMENTS ECONOMY_7_DIFFERENCE: ECONOMY_7_DIFFERENCE ERRONEOUS_TRANSFER_REFUND: ERRONEOUS_TRANSFER_REFUND EXIT_FEE_REFUND: EXIT_FEE_REFUND EXPORT_TARIFF_PAYMENT: EXPORT_TARIFF_PAYMENT EXTERNAL_REFERRAL_CREDIT: EXTERNAL_REFERRAL_CREDIT FEED_IN_TARIFF_PAYMENT: FEED_IN_TARIFF_PAYMENT GO_CARDLESS_CHARGEBACK_CANCELLED: GO_CARDLESS_CHARGEBACK_CANCELLED GSS_AFFECT: GSS_AFFECT GSS_FAILURE: GSS_FAILURE GSS_FAILURE_MOP: GSS_FAILURE_MOP HONOURED_BANK_CHARGES: HONOURED_BANK_CHARGES INCOMING_PAYMENT_GO_CARDLESS: INCOMING_PAYMENT_GO_CARDLESS MANAGEMENT_WAIVED_FEES: MANAGEMENT_WAIVED_FEES MARKET_RESEARCH_CLUB_REWARD: MARKET_RESEARCH_CLUB_REWARD MISSED_SAVINGS: MISSED_SAVINGS OFFSET: OFFSET PAYMENT_BANK_ACCOUNT: PAYMENT_BANK_ACCOUNT PAYMENT_BPAY: PAYMENT_BPAY PAYMENT_CENTREPAY: PAYMENT_CENTREPAY PAYMENT_CHEQUE: PAYMENT_CHEQUE PAYMENT_CREDIT_CARD: PAYMENT_CREDIT_CARD PAYMENT_TRANSFER_FROM_SAP: PAYMENT_TRANSFER_FROM_SAP PREPAY_DEBT_ADJUSTMENT: PREPAY_DEBT_ADJUSTMENT QLD_ASSET_OWNERSHIP_DIVIDEND: QLD_ASSET_OWNERSHIP_DIVIDEND RECEIVED_VIA_CREDIT_STYLE: RECEIVED_VIA_CREDIT_STYLE REFERRALCANDY_INCENTIVE: REFERRALCANDY_INCENTIVE REINSTATED_DIRECT_DEBIT: REINSTATED_DIRECT_DEBIT RETURNED_BUSINESS_ADVANCE_PAYMENT: RETURNED_BUSINESS_ADVANCE_PAYMENT RETURNED_BUSINESS_PREPAYMENT: RETURNED_BUSINESS_PREPAYMENT REVERSE_ENERGY_CHARGE: REVERSE_ENERGY_CHARGE REVERSIONED_POST_DD_CANX: REVERSIONED_POST_DD_CANX SALES_COMPENSATION: SALES_COMPENSATION SHARE_OF_PROFITS: SHARE_OF_PROFITS SINGLE_RATE_RMI: SINGLE_RATE_RMI SME_REVERSED_PRE_MIGRATION_CHARGE: SME_REVERSED_PRE_MIGRATION_CHARGE SOLAR_GOODWILL: SOLAR_GOODWILL SOLR_BALANCE_TRANSFER: SOLR_BALANCE_TRANSFER SOLR_EX_CUSTOMER_CREDIT: SOLR_EX_CUSTOMER_CREDIT SOLR_WRITE_OFF: SOLR_WRITE_OFF STAFF_DISCOUNT: STAFF_DISCOUNT STANDARDS_OF_PERFORMANCE_APPOINTMENTS_FAULTY_METER_ELEC: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_FAULTY_METER_ELEC STANDARDS_OF_PERFORMANCE_APPOINTMENTS_PREPAY_METER_ELEC: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_PREPAY_METER_ELEC STANDARDS_OF_PERFORMANCE_APPOINTMENTS_RECONNECTION_ELEC: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_RECONNECTION_ELEC STANDARDS_OF_PERFORMANCE_APPOINTMENTS_STANDARD_VISIT_ELEC: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_STANDARD_VISIT_ELEC STANDARDS_OF_PERFORMANCE_CUSTOMER_NOT_RETURNED: STANDARDS_OF_PERFORMANCE_CUSTOMER_NOT_RETURNED STANDARDS_OF_PERFORMANCE_ERRONEOUS_TRANSFER: STANDARDS_OF_PERFORMANCE_ERRONEOUS_TRANSFER STANDARDS_OF_PERFORMANCE_ET_COMMS_OVERDUE: STANDARDS_OF_PERFORMANCE_ET_COMMS_OVERDUE STANDARDS_OF_PERFORMANCE_ET_GAIN_ACCEPTED: STANDARDS_OF_PERFORMANCE_ET_GAIN_ACCEPTED STANDARDS_OF_PERFORMANCE_ET_GAIN_UNRESOLVED: STANDARDS_OF_PERFORMANCE_ET_GAIN_UNRESOLVED STANDARDS_OF_PERFORMANCE_ET_LOSS_UNRESOLVED: STANDARDS_OF_PERFORMANCE_ET_LOSS_UNRESOLVED STANDARDS_OF_PERFORMANCE_FINAL_BILL_ISSUED_LATE: STANDARDS_OF_PERFORMANCE_FINAL_BILL_ISSUED_LATE STANDARDS_OF_PERFORMANCE_PAYMENTS: STANDARDS_OF_PERFORMANCE_PAYMENTS STANDARDS_OF_PERFORMANCE_REFUND_ISSUED_LATE: STANDARDS_OF_PERFORMANCE_REFUND_ISSUED_LATE TARIFF_DISCOUNT: TARIFF_DISCOUNT TARIFF_PRICE_ADJUSTMENT_GOODWILL: TARIFF_PRICE_ADJUSTMENT_GOODWILL WAIVE_TERMINATION_FEES: WAIVE_TERMINATION_FEES WITHDRAWAL_NOT_ACTIONED: WITHDRAWAL_NOT_ACTIONED EBSS_CREDIT: EBSS_CREDIT WARM_HOME_DISCOUNT_BROADER_GROUP: WARM_HOME_DISCOUNT_BROADER_GROUP WARM_HOME_DISCOUNT_CORE_GROUP: WARM_HOME_DISCOUNT_CORE_GROUP WARM_HOME_DISCOUNT_CORE_GROUP_1: WARM_HOME_DISCOUNT_CORE_GROUP_1 WARM_HOME_DISCOUNT_CORE_GROUP_2: WARM_HOME_DISCOUNT_CORE_GROUP_2 ADDITIONAL_SOP_PAYMENT_GAS_SWITCH_DELAYED: ADDITIONAL_SOP_PAYMENT_GAS_SWITCH_DELAYED GAS_NETWORK_COMPENSATION: GAS_NETWORK_COMPENSATION GAS_OFF_SUPPLY_PAYMENT: GAS_OFF_SUPPLY_PAYMENT GOVERNMENT_ENERGY_ASSISTANCE_HEEA: GOVERNMENT_ENERGY_ASSISTANCE_HEEA PAYMENT_AUSPOST: PAYMENT_AUSPOST PAYMENT_EAPA_VOUCHER: PAYMENT_EAPA_VOUCHER PAYMENT_IVR: PAYMENT_IVR STANDARDS_OF_PERFORMANCE_APPOINTMENTS_FAULTY_METER_GAS: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_FAULTY_METER_GAS STANDARDS_OF_PERFORMANCE_APPOINTMENTS_PREPAY_METER_GAS: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_PREPAY_METER_GAS STANDARDS_OF_PERFORMANCE_APPOINTMENTS_RECONNECTION_GAS: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_RECONNECTION_GAS STANDARDS_OF_PERFORMANCE_APPOINTMENTS_STANDARD_VISIT_GAS: STANDARDS_OF_PERFORMANCE_APPOINTMENTS_STANDARD_VISIT_GAS MIGRATION_ADJUSTMENT: MIGRATION_ADJUSTMENT BILL_ADJUSTMENT_0: BILL_ADJUSTMENT_0 BILL_ADJUSTMENT_20: BILL_ADJUSTMENT_20 BILL_ADJUSTMENT_5: BILL_ADJUSTMENT_5 GOODWILL: GOODWILL DAILY_STANDING_CHARGE_ROLLBACK: DAILY_STANDING_CHARGE_ROLLBACK CANCELLED_CHEQUE_RESI: CANCELLED_CHEQUE_RESI CANCELLED_CHEQUE_SME: CANCELLED_CHEQUE_SME PREPAYMENT_ADDITIONAL_SUPPORT_CREDIT: PREPAYMENT_ADDITIONAL_SUPPORT_CREDIT WELFARE_VISIT_FEE_REVERSAL: WELFARE_VISIT_FEE_REVERSAL WARRANT_FEES_COSTS_REVERSAL: WARRANT_FEES_COSTS_REVERSAL WARRANT_EXECUTION_FEE_REVERSAL: WARRANT_EXECUTION_FEE_REVERSAL MISDIRECTED_CREDIT_PAYMENT: MISDIRECTED_CREDIT_PAYMENT MISSING_PREPAYMENT_TOP_UP: MISSING_PREPAYMENT_TOP_UP TERM_DCA_FEE_REVERSAL: TERM_DCA_FEE_REVERSAL HAMPTON_FUEL_PAYMENT: HAMPTON_FUEL_PAYMENT DEEMED_0_CONSUMPTION_WRITE_OFF: DEEMED_0_CONSUMPTION_WRITE_OFF NET_ZERO_HERO_AWARD: NET_ZERO_HERO_AWARD STANDARD_OF_PERFORMANCE_ELEC_SWITCH_DELAY: STANDARD_OF_PERFORMANCE_ELEC_SWITCH_DELAY STANDARD_OF_PERFORMANCE_GAS_SWITCH_DELAY: STANDARD_OF_PERFORMANCE_GAS_SWITCH_DELAY ADDITIONAL_SOP_FINAL_BILL_OVERDUE: ADDITIONAL_SOP_FINAL_BILL_OVERDUE EMAIL_PRIZE_DRAW: EMAIL_PRIZE_DRAW GREEN_DEAL: GREEN_DEAL GREEN_DEAL_WRITE_OFF: GREEN_DEAL_WRITE_OFF GREEN_DEAL_BILL_ADJUSTMENT: GREEN_DEAL_BILL_ADJUSTMENT OPUS_FINAL_BALANCE_TRANSFER: OPUS_FINAL_BALANCE_TRANSFER OPUS_FINAL_BALANCE_ADJUSTMENT: OPUS_FINAL_BALANCE_ADJUSTMENT WARM_HOME_DISCOUNT_REBATE_5: WARM_HOME_DISCOUNT_REBATE_5 RECONNECTION_CHARGE_REV: RECONNECTION_CHARGE_REV DAP_LOSING_SUPPLIER_10: DAP_LOSING_SUPPLIER_10 DAP_LOSING_SUPPLIER_90: DAP_LOSING_SUPPLIER_90 LOYALTY_RETAIN: LOYALTY_RETAIN SUNDAY_SAVER: SUNDAY_SAVER RMGEDF24: RMGEDF24 SAP_MIGRATED_CREDITS: SAP_MIGRATED_CREDITS TESEDF24: TESEDF24 WHIEDF24: WHIEDF24 VODEDF24: VODEDF24 NISEDF24: NISEDF24 EV_50_CREDIT: EV_50_CREDIT PLUG__POWER_300_CREDIT: PLUG__POWER_300_CREDIT PLUG__POWER_200_CREDIT: PLUG__POWER_200_CREDIT RENEWAL_CREDIT: RENEWAL_CREDIT EV_FLEX_SCHEME_CREDIT: EV_FLEX_SCHEME_CREDIT REFER_A_FRIEND_5: REFER_A_FRIEND_5 WRITE_OFF_UNRECOVERABLE_DEBT_RESI: WRITE_OFF_UNRECOVERABLE_DEBT_RESI INDEMNITY_CLAIM: INDEMNITY_CLAIM VALENTINES_DAY: VALENTINES_DAY RIPPLE_ENERGY_CREDIT_RESI: RIPPLE_ENERGY_CREDIT_RESI RIPPLE_ENERGY_CREDIT_BUSINESS: RIPPLE_ENERGY_CREDIT_BUSINESS RESQEDF25: RESQEDF25 PREEDF25: PREEDF25 TRANSFERRED_DEBT_BILL_ADJUSTMENT: TRANSFERRED_DEBT_BILL_ADJUSTMENT SBOFFERCREDIT: SBOFFERCREDIT EVRI100: EVRI100 OPUS_DEENERGISED_ADJUSTMENT: OPUS_DEENERGISED_ADJUSTMENT SMART_CHARGING_INCENTIVE: SMART_CHARGING_INCENTIVE SMART_CHARGING_SAVING: SMART_CHARGING_SAVING FAFS_TERMED_ACCOUNT: FAFS_TERMED_ACCOUNT PLUG__POWER_100_CREDIT: PLUG__POWER_100_CREDIT SETTLEMENT_LIVE_ACCOUNT: SETTLEMENT_LIVE_ACCOUNT TENNIS_FINALS_CREDIT: TENNIS_FINALS_CREDIT SCHOOL_HOLIDAYS_CREDIT: SCHOOL_HOLIDAYS_CREDIT CHRISTMAS_DAY_CREDIT: CHRISTMAS_DAY_CREDIT FREE_PHASE_FREE_ELECTRICITY: FREE_PHASE_FREE_ELECTRICITY EARLY_RENEWAL_50_CREDIT: EARLY_RENEWAL_50_CREDIT GOELECTRIC_130_OFFER: GOELECTRIC_130_OFFER EXPORT_TARIFF_PAYMENT_RESI: EXPORT_TARIFF_PAYMENT_RESI REFER_A_FRIEND_NEW: REFER_A_FRIEND_NEW DEBTSOLD_PAYMENTREVERSAL: DEBTSOLD_PAYMENTREVERSAL BUPEDF25: BUPEDF25 CARE_SUPPORT_SCHEME: CARE_SUPPORT_SCHEME UTILITA_TRANSFER: UTILITA_TRANSFER WELCOMEGAS1YEAR: WELCOMEGAS1YEAR UTILITA_FINAL_BALANCE_TRANSFER: UTILITA_FINAL_BALANCE_TRANSFER WELCOMEGAS2YEAR: WELCOMEGAS2YEAR WELCOMEGAS3YEAR: WELCOMEGAS3YEAR WELCOMEGAS4YEAR: WELCOMEGAS4YEAR EARLY_RENEWAL_75_CREDIT: EARLY_RENEWAL_75_CREDIT SUNDAY_SAVER__ERRONEOUS_MESSAGE_COMPENSATION: SUNDAY_SAVER__ERRONEOUS_MESSAGE_COMPENSATION EV_SWITCH_BONUS_50: EV_SWITCH_BONUS_50 SBNEWACQ1YEAR: SBNEWACQ1YEAR SBNEWACQ2YEAR: SBNEWACQ2YEAR SBNEWACQ3YEAR: SBNEWACQ3YEAR SBNEWACQ4YEAR: SBNEWACQ4YEAR SBNEWACQ100: SBNEWACQ100 SBNEWACQ150: SBNEWACQ150 SBNEWACQ175: SBNEWACQ175 SBNEWACQ200: SBNEWACQ200 LATE_PAYMENT_REVERSAL: LATE_PAYMENT_REVERSAL OVERDALES_DEBT_WRITE_OFF: OVERDALES_DEBT_WRITE_OFF SBNEWACQFIX50: SBNEWACQFIX50 SBNEWACQFIX150: SBNEWACQFIX150 SBNEWACQFIX100: SBNEWACQFIX100 SBNEWACQFIX175: SBNEWACQFIX175 OFGEM_DEBT_RELIEF_SCHEME_GROUP_1: OFGEM_DEBT_RELIEF_SCHEME_GROUP_1 SB_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING_20: SB_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING_20 SB_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING_5_VAT: SB_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING_5_VAT OFGEM_DEBT_RELIEF_SCHEME_GROUP_2: OFGEM_DEBT_RELIEF_SCHEME_GROUP_2 SB_FREE_ENERGY: SB_FREE_ENERGY ADDITIONAL_SOP_FINAL_BILL_REFUND_OVERDUE: ADDITIONAL_SOP_FINAL_BILL_REFUND_OVERDUE LOW_STANDING_CHARGE_TRIAL_GAS: LOW_STANDING_CHARGE_TRIAL_GAS LOW_STANDING_CHARGE_TRIAL_ELECTRICITY: LOW_STANDING_CHARGE_TRIAL_ELECTRICITY NEWACQGAS200: NEWACQGAS200 UUEDF26: UUEDF26 CHAPS_PAYMENT: CHAPS_PAYMENT FOOTBALL_CREDIT: FOOTBALL_CREDIT RESI_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING: RESI_DEBT_WRITTEN_OFF_DEBT_RECOVERY_ACTION_CONTINUING SBEXTRANEWACQ100: SBEXTRANEWACQ100 SBEXTRANEWACQ150: SBEXTRANEWACQ150 SBEXTRANEWACQ25: SBEXTRANEWACQ25 SBEXTRANEWACQ50: SBEXTRANEWACQ50 SBEXTRANEWACQ75: SBEXTRANEWACQ75 to_prepay_meter_serial_number: type: string description: "

The serial number of the prepay meter that this transaction has been \"sent to\" (via a PPMIP).

\n

In the case of prepay vends, this \"sending\" was carried out by the customer paying\n at an outlet; as such, this field should always be populated for prepay vend transactions.

\n

In the case of credits and non-consumption charges applied to the customer's account\n pre-migration, this field should be populated only where a request to add the corresponding\n credit or debt to the prepay meter has been sent and accepted by the PPMIP.

" transaction_date: type: string format: date description:

The date of the transaction.

x-validators: - name: Validate transaction date description: Validates that the transaction date provided in the payload is not in the future. possible_errors: - transaction_in_future transaction_id: type: string description:

The unique internal identifier for the transaction.

required: - amount - reason - transaction_date - transaction_id - type EnergyCreditHold: type: object properties: active_from: type: string format: date description:

The date from which the payment hold should apply to this account. Defaults to the time the account is imported.

notes: type: string description:

Free text shown in the Kraken UI that can be used to give additional information as to why payments should be held for this installation.

reason: enum: - HAS_NOMINATED_RECIPIENT - INVOLVED_IN_COO - SWITCH_LOSS - LINKED_TO_WRONG_ACCOUNT - PAID_INCORRECTLY - MIGRATED_IN_DISPUTE - AWAITING_SIGNED_FIT_PLAN - CLOSED_INSTALLATION - NEEDS_MANUAL_PAYMENT - BIENNIAL_DISPUTES - OTHER type: string x-spec-enum-id: f1750fe4d62e6a8e description:

The reason why payments should be held for this installation.

x-enum-descriptions: HAS_NOMINATED_RECIPIENT: Has nominated recipient INVOLVED_IN_COO: Currently undergoing a COO SWITCH_LOSS: Has switched away (loss) LINKED_TO_WRONG_ACCOUNT: Generator is linked to wrong account PAID_INCORRECTLY: Payments made were based on incorrect readings MIGRATED_IN_DISPUTE: Migrated in dispute AWAITING_SIGNED_FIT_PLAN: Awaiting signed FIT plan CLOSED_INSTALLATION: Closed installation NEEDS_MANUAL_PAYMENT: Needs manual payment BIENNIAL_DISPUTES: Biennial disputes OTHER: Other reason (add notes) required: - active_from - reason EnergyCustomer: type: object properties: account_roles: type: array items: enum: - POWER_OF_ATTORNEY - NEIGHBOUR - LOA_LEVEL_1 - LOA_LEVEL_3 - CARER - ADMIN - EXECUTOR - LOA_LEVEL_2 - STUDENT_HOUSE - FRIEND_FAMILY_MEMBER type: string description: |- * `POWER_OF_ATTORNEY` - POWER_OF_ATTORNEY * `NEIGHBOUR` - NEIGHBOUR * `LOA_LEVEL_1` - LOA_LEVEL_1 * `LOA_LEVEL_3` - LOA_LEVEL_3 * `CARER` - CARER * `ADMIN` - ADMIN * `EXECUTOR` - EXECUTOR * `LOA_LEVEL_2` - LOA_LEVEL_2 * `STUDENT_HOUSE` - STUDENT_HOUSE * `FRIEND_FAMILY_MEMBER` - FRIEND_FAMILY_MEMBER x-spec-enum-id: 3dc3c0de7d5344dd x-enum-descriptions: POWER_OF_ATTORNEY: POWER_OF_ATTORNEY NEIGHBOUR: NEIGHBOUR LOA_LEVEL_1: LOA_LEVEL_1 LOA_LEVEL_3: LOA_LEVEL_3 CARER: CARER ADMIN: ADMIN EXECUTOR: EXECUTOR LOA_LEVEL_2: LOA_LEVEL_2 STUDENT_HOUSE: STUDENT_HOUSE FRIEND_FAMILY_MEMBER: FRIEND_FAMILY_MEMBER description:

A list of account roles to be assigned to the customer on account creation. Unlike Portfolio Roles, these will only apply to this customer for this single account.

alternative_phone_numbers: type: array items: $ref: '#/components/schemas/CustomerAlternativeNumber' description:

A list of the customer's alternative phone numbers.

consents: type: array items: $ref: '#/components/schemas/CustomerConsent' description:

A list of what this individual customer has and has not consented to.

x-validators: - name: Validate consents are only provided if enabled description: Validate consents are only provided if enabled within this Kraken. possible_errors: - field_not_enabled - name: Validate that each child has unique values for the ⁨type⁩ field description: Validate that each child has unique values for the ⁨type⁩ field. possible_errors: - children_with_duplicate_values contact_emails: type: array items: type: string format: email description:

A list of additional email addresses to associate with the customer account. These can be used for sending communications to the customer. Each email must be a valid email address.

credit_assessment_id: type: string nullable: true description:

Customers credit assessment id.

credit_result: type: string nullable: true description:

The credit result from the provider.

credit_risk_bracket: enum: - LOW - MID - HIGH - UNKNOWN - '' - null type: string x-spec-enum-id: e6b98b6c312ff7bf nullable: true description:

The deemed credit risk bracket for this customer.

x-enum-descriptions: LOW: Low MID: Medium HIGH: High UNKNOWN: Unknown '': '' None: None credit_score: type: integer maximum: 9999 minimum: 0 nullable: true description:

Customers credit score.

customer_preferences: allOf: - $ref: '#/components/schemas/EnergyCustomerPreferences' description:

The communication preferences of the customer. NOTE that this is deprecated and consents should be used to achieve these preferences instead.

deprecated: true x-use-instead: consents date_of_birth: type: string format: date nullable: true description:

The customer's date of birth.

deceased: enum: - Reported - Confirmed - '' type: string x-spec-enum-id: f90e7d899a971044 default: '' description:

Whether the customer is deceased or not. Defaults to an empty string if not provided.

x-enum-descriptions: Reported: Reported Confirmed: Confirmed '': '' details: nullable: true description:

Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.

deprecated: true x-use-instead: user_details x-validators: - name: Validate user details description: Validates that the user detail namespace and value are allowed for the customer. The user detail namespace (the key in the JSON object) must already have been set up in Kraken. The value (the value in the JSON object) must be the correct data type. possible_errors: - customer_detail_failed_validation - customer_detail_incorrect_value_type - customer_detail_not_registered email: type: string format: email nullable: true description:

The customer's email address. This is the email address they will use to log into their online portal. Defaults to an empty string if not provided. Cannot be longer that 254 characters.

maxLength: 254 x-validators: - name: Validate email address is not test address description: Validates that a customer email address is not a test email address. An email address is considered a test address if it starts with "test@"" or "xxx@"" or ends with "@test.com", "@test.co.uk", ".xxx" or ".xx". possible_errors: - possible_test_email_address - name: Validate email is not internal description: Validates that a customer email address does not use an internal Kraken handler. For example, if an instance of Kraken has registered info@kraken.info as an internal email address, then the customer email address must not match this. possible_errors: - internal_email_address family_name: type: string default: '' description:

The customer's family name.

maxLength: 255 given_name: type: string default: '' description:

The customer's given name.

maxLength: 255 label: type: string nullable: true description:

A free text field to help identify the user (e.g. a job title).

landline: type: string nullable: true default: '' description:

The customer's landline phone number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number metadata: type: array items: $ref: '#/components/schemas/Metadata' description:

An array of key value pairs for storing generic metadata relating to a customer. Metadata is externally focused and is not used for any logic within Kraken. Its main motivation is to provide a simple persistence mechanism for clients building their own integrations with Kraken. If a customer already exists in Kraken with existing metadata for the provided key, the value associated with this key will be overwritten.

mobile: type: string nullable: true default: '' description:

The customer's personal mobile number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number portfolio_roles: type: array items: enum: - POWER_OF_ATTORNEY - NEIGHBOUR - LOA_LEVEL_1 - LOA_LEVEL_3 - CARER - ADMIN - EXECUTOR - LOA_LEVEL_2 - STUDENT_HOUSE - FRIEND_FAMILY_MEMBER type: string description: |- * `POWER_OF_ATTORNEY` - POWER_OF_ATTORNEY * `NEIGHBOUR` - NEIGHBOUR * `LOA_LEVEL_1` - LOA_LEVEL_1 * `LOA_LEVEL_3` - LOA_LEVEL_3 * `CARER` - CARER * `ADMIN` - ADMIN * `EXECUTOR` - EXECUTOR * `LOA_LEVEL_2` - LOA_LEVEL_2 * `STUDENT_HOUSE` - STUDENT_HOUSE * `FRIEND_FAMILY_MEMBER` - FRIEND_FAMILY_MEMBER x-spec-enum-id: 3dc3c0de7d5344dd x-enum-descriptions: POWER_OF_ATTORNEY: POWER_OF_ATTORNEY NEIGHBOUR: NEIGHBOUR LOA_LEVEL_1: LOA_LEVEL_1 LOA_LEVEL_3: LOA_LEVEL_3 CARER: CARER ADMIN: ADMIN EXECUTOR: EXECUTOR LOA_LEVEL_2: LOA_LEVEL_2 STUDENT_HOUSE: STUDENT_HOUSE FRIEND_FAMILY_MEMBER: FRIEND_FAMILY_MEMBER description:

A list of portfolio roles to be assigned to the customer on account creation. If not provided, this falls back to the currently configured default.

pronouns: enum: - OTHER - E_EM_EIR - EY_EM_EIR - FAE_FAER_FAERS - HE_HIM_HIS - PER_PER_PERS - SHE_HER_HERS - THEY_THEM_THEIRS - VE_VER_VIS - XE_XEM_XYR - ZE_HIR_HIRS - ZE_ZIR_ZIRS - ZIE_HIR_HIRS - ZIE_ZIR_ZIRS - '' - null type: string x-spec-enum-id: 97953066f4a8c7fa nullable: true default: '' description:

How this person wants to be referred to in the third person.

x-enum-descriptions: OTHER: Other E_EM_EIR: E/Em/Eir EY_EM_EIR: Ey/Em/Eir FAE_FAER_FAERS: Fae/Faer/Faers HE_HIM_HIS: He/Him/His PER_PER_PERS: Per/Per/Pers SHE_HER_HERS: She/Her/Hers THEY_THEM_THEIRS: They/Them/Theirs VE_VER_VIS: Ve/Ver/Vis XE_XEM_XYR: Xe/Xem/Xyr ZE_HIR_HIRS: Ze/Hir/Hirs ZE_ZIR_ZIRS: Ze/Zir/Zirs ZIE_HIR_HIRS: Zie/Hir/Hirs ZIE_ZIR_ZIRS: Zie/Zir/Zirs '': '' None: None psr: type: array items: $ref: '#/components/schemas/EnergyPSR' description:

A list of the customer's records on the Priority Services Register (PSR).

role: enum: - POWER_OF_ATTORNEY - NEIGHBOUR - LOA_LEVEL_1 - LOA_LEVEL_3 - CARER - ADMIN - EXECUTOR - LOA_LEVEL_2 - STUDENT_HOUSE - FRIEND_FAMILY_MEMBER - null type: string x-spec-enum-id: 3dc3c0de7d5344dd nullable: true description:

The portfolio role to be assigned to the customer on account creation. If not provided, this falls back to the currently configured default.

x-enum-descriptions: POWER_OF_ATTORNEY: POWER_OF_ATTORNEY NEIGHBOUR: NEIGHBOUR LOA_LEVEL_1: LOA_LEVEL_1 LOA_LEVEL_3: LOA_LEVEL_3 CARER: CARER ADMIN: ADMIN EXECUTOR: EXECUTOR LOA_LEVEL_2: LOA_LEVEL_2 STUDENT_HOUSE: STUDENT_HOUSE FRIEND_FAMILY_MEMBER: FRIEND_FAMILY_MEMBER None: None deprecated: true x-use-instead: portfolio_roles salutation: type: string nullable: true default: '' description:

The customer's preferred salutation.

maxLength: 128 title: type: string nullable: true default: '' description:

The customer's preferred title.

maxLength: 20 unable_to_read_meters: type: boolean default: false description:

Whether the customer is unable to read their meters themselves. Defaults to False.

user_details: type: array items: $ref: '#/components/schemas/CustomerUserDetail' description:

Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.

x-validators: - name: Validate required customer details namespaces provided description: No required namespaces configured. Validation skipped. possible_errors: - required_customer_details_namespace_missing user_identifier: type: string description:

Unique identifier for the customer. Used for cross referencing the customer within other parts of the payload.

x-validators: - name: Ensures only user_details or details are provided description: Ensures that only user_details or details 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 unknown_occupier 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 portfolio_roles or account_roles. 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 ⁨customer_preferences⁩ and ⁨consents⁩ are not both provided description: Validate that ⁨customer_preferences⁩ and ⁨consents⁩ are not both provided. possible_errors: - fields_are_mutually_exclusive EnergyCustomerPreferences: type: object properties: is_user_psr_consent_obtained: type: boolean nullable: true description:

Whether the customer consented to Priority Services Register (PSR) data being used.

opted_into_associated_companies: type: boolean default: false description:

Whether the customer is opted in to messages from associated companies. It will be False by default.

opted_into_offers: type: boolean default: false description:

Whether the customer is opted in to offers, for example marketing emails. It will be False by default.

opted_into_recommended: type: boolean default: true description:

Whether the customer is opted into non-critical messages, such as Direct Debit messages and meter reading reminders. It will be True by default.

opted_into_sms: type: boolean default: false description:

Whether the customer is opted in to receive SMS messages. This includes both transactional and marketing messages. It will be False by default.

opted_into_third_parties: type: boolean default: false description:

Whether the customer is opted in to messages from third party companies. It will be False by default.

opted_into_updates: type: boolean default: false description:

Whether the customer is opted in to receive non-critical messages such as newsletters. It will be False by default.

opted_into_whatsapp: type: boolean default: false description:

Whether the customer is opted in to receive Whatsapp messages. This includes both transactional and marketing messages. It will be False by default.

partner_password: type: string default: '' description:

Priority Services Register (PSR) password for the customer.

maxLength: 10 EnergyExtension: type: object properties: installed_capacity: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The extension's installed capacity in kWh.

reference_number: type: integer description:

The reference number of the extension.

required: - reference_number EnergyFit: type: object properties: installations: type: array items: $ref: '#/components/schemas/EnergyInstallation' description:

List of FiT installations that will be imported into Kraken from CRF. All installations under a single generator in CFR must be in the same payload. The installations here must be accessible by the supplier's licensee in CFR.

minItems: 1 instruction_reference: type: string description:

The mandate reference mandate as known by the vendor. This field is required if the payment_method is BACS.

maxLength: 512 meters: type: array items: $ref: '#/components/schemas/EnergyMeter' description:

List containing each of the customer's meters. Note this sits alongside the installations object because meters can be shared across installations and, although it's rare, we need to accommodate for that.

minItems: 1 payment_method: enum: - BACS - CHEQUE - CHAPS - FOREIGN_CHAPS type: string x-spec-enum-id: 42bf36018d9580d0 description:

The payment method thsat the customer will recive FiT payments. Note that Kraken requires a DD instruction with the payment vendor for carrying out BACS payments. Please check with the tech team whether CHEQUE is supported for FiT in your Kraken instance if you are considering using this.

x-enum-descriptions: BACS: Bacs CHEQUE: Cheque CHAPS: Chaps FOREIGN_CHAPS: Foreign Chaps vat_number: type: string description:

The VAT number for VAT-registered customers to whom we should pay VAT on export payments.

vendor_name: enum: - STRIPE - BOTTOMLINE_GLOBAL_PAYMENTS_HUB - BOTTOMLINE_PTX - BOTTOMLINE_PTX_BATCHED type: string x-spec-enum-id: cd9cdc0ef05270d9 description:

Please contact the tech team for the names of the vendors available to you. Required if the payment_method is BACS.

x-enum-descriptions: STRIPE: Stripe BOTTOMLINE_GLOBAL_PAYMENTS_HUB: Bottomline Global Payments Hub BOTTOMLINE_PTX: Bottomline PTX BOTTOMLINE_PTX_BATCHED: Bottomline PTX Batched required: - installations - meters - payment_method x-validators: - name: Validate payment instruction details are complete description: Validate that a vendor name and instruction reference have been provided if the payment method is BACS. possible_errors: - payment_instruction_details_incomplete EnergyInstallation: type: object properties: address: allOf: - $ref: '#/components/schemas/EnergyAddress' description:

Use this to override the address we would import from CFR.

credit_hold: allOf: - $ref: '#/components/schemas/EnergyCreditHold' description:

Objects to indicate that we should hold payments for this installation.

fit_id: type: string description:

CFR installation FiT ID.

non_eligible_extensions: type: array items: $ref: '#/components/schemas/EnergyExtension' description:

List of installation extensions that are not eligible for FiT payments.

required: - fit_id EnergyLegacySupplyAddress: type: object properties: customer_at_supply_address_from_date: type: string format: date description:

The date when the customer started being on supply at the given address.

customer_at_supply_address_to_date: type: string format: date nullable: true description:

The date when the customer stopped being on supply at the given address, e.g. when they moved out.

is_landlord: type: boolean default: false description:

Whether this account holder is the landlord of the property.

label: type: string description:

Label to identify the supply address.

maxLength: 255 metadata: type: array items: $ref: '#/components/schemas/Metadata' description: data-import--field-definition--property-hierarchy-details--metadata--html meter_points: type: array items: $ref: '#/components/schemas/MeterPoint' description:

A list of meter points linked to the supply address.

x-validators: - name: Validate that there are no duplicate MPXNs on a supply point description: Validate that all MPXNs for a supply point are unique. possible_errors: - duplicate_meter_points_provided primary_place_of_residence_since: type: string format: date description:

This field is used to determine if this address is the customer's primary place of residence.

property_administrators: type: array items: $ref: '#/components/schemas/PropertyAdministrator' description:

Details of any persons who are considered administrators of the supply address. Only one entry is currently permitted - additional administrators need to be added via the support site. This user will be granted admin access to all accounts within the same portfolio.

property_external_identifier: type: string description:

The extrernal identifier for the property<\p> maxLength: 255 supply_address1: type: string description:

Supply address line 1.

maxLength: 512 supply_address2: type: string description:

Supply address line 2.

maxLength: 512 supply_address3: type: string description:

Supply address line 3.

maxLength: 512 supply_address4: type: string description:

Supply address line 4.

maxLength: 512 supply_address5: type: string description:

Supply address line 5.

maxLength: 512 supply_delivery_point_identifier: type: string description:

The postal delivery point identifier for this address. For GB addresses this will be the postcode (without the space) and Delivery Point Suffix, for Australian addresses the Delivery Point Identifier, and for US addresses the full 11-digit Delivery Point code (without hyphens).

maxLength: 11 x-validators: - name: Validate delivery point identifier description: Validate that the delivery point identifier contains only capital letters and numbers. possible_errors: - invalid_delivery_point_identifier supply_postcode: type: string description:

Supply address postcode.

maxLength: 10 x-validators: - name: Validate and normalize postcode description: Validate the postal code and normalize it to a standard format. possible_errors: - invalid_postcode required: - customer_at_supply_address_from_date - meter_points - supply_address1 - supply_postcode x-validators: - name: Validate supply address description: Validate that the supply address itself (supply_address1, ..., supply_postcode) is in the correct format. possible_errors: - invalid_address - name: Validate landlord details and property administrators aren't both provided description: Validate that landlord details and property administrators aren't both provided. If landlord details are provided, copy them to the property administrators field. possible_errors: - both_landlord_details_and_property_administrators_provided - name: Validate no more than one property administrator is provided description: Validate no more than one property administrator is provided. possible_errors: - multiple_property_administrators EnergyMeter: type: object properties: extensions: type: array items: type: string description:

The references of the extensions that this meter is attached to e.g. ["FIT00123456-1",]. These IDs must match what is found in CFR, as this is where we get the extension data from. This list of IDs looks up the existing extensions in Kraken to link to the meter.

minItems: 1 last_billed_to_date: type: string format: date description:

The date up to which consumption has been billed to for the meter.

make: type: string description:

The make of the meter.

model: type: string description:

The meter model.

mpan: type: string description:

The 13-digit MPAN core. Optional for export and generation meters.

serial_number: type: string description:

The meter's serial number.

transfer_reading: allOf: - $ref: '#/components/schemas/EnergyReading' description:

A transfer reading is required for all meters and represents the reading that Kraken will start paying the customer from.

type: enum: - EXPORT - SUPPLY - GENERATION type: string x-spec-enum-id: af6cdc3db486391a description:

The meter type.

x-enum-descriptions: EXPORT: Export SUPPLY: Supply GENERATION: Generation required: - extensions - last_billed_to_date - serial_number - transfer_reading - type EnergyPSR: type: object properties: additional_information: type: string nullable: true default: '' description:

Any additional information related to the PSR record.

description: type: string nullable: true default: '' description:

The description corresponding to a Priority Services Category, as defined in DTC Data Item J1699.

x-validators: - name: Validate PSR description description: Validate that the PSR description provided in the payload is a valid option. possible_errors: - psr_record_description_not_found effective_from: type: string format: date-time description:

The date on which the record was added to the PSR.

effective_to: type: string format: date-time nullable: true description:

The date on which the record was removed from the PSR.

elec_industry_code: type: string nullable: true default: '' description:

The electricity industry code corresponding to a Priority Services Category, as defined in DTC Data Item J1699.

x-validators: - name: Validate PSR electricity industry code description: Validate that the PSR electricity industry code provided in the payload is a valid option. possible_errors: - electricity_psr_record_not_found - psr_invalid_industry_code gas_industry_code: type: string nullable: true default: '' description:

The gas industry code corresponding to a Priority Services Category, as defined in DTC Data Item J1699.

x-validators: - name: Validate PSR gas industry code description: Validate that the PSR gas industry code provided in the payload is a valid option. possible_errors: - gas_psr_record_not_found - psr_invalid_industry_code x-validators: - name: Validate PSR industry code provided description: Validate that either an electricity or gas PSR industry code is provided. possible_errors: - psr_industry_code_not_provided - name: Validate that temporary PSRs have an effective_to datetime specified description: Validate that any Priority Services Register (PSR) association that is seen as temporary has an end date specified using the effective_to field. possible_errors: - temporary_psr_does_not_have_end_date EnergyPayment: type: object properties: type: enum: - CHARGE - PAYMENT - REPAYMENT - CREDIT - SUPPLY_CHARGE type: string x-spec-enum-id: 06d6aba5cee32f9a description:

The type of the transaction.

x-enum-descriptions: CHARGE: Charge PAYMENT: Payment REPAYMENT: Repayment CREDIT: Credit SUPPLY_CHARGE: Supply Charge amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type CHARGE of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

billing_document_identifier: type: string description:

The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER settings is ON and is meant for only historical_statements_transactions. Passing this to other transactions like current_statement_transactions or transactions_in_open_settlement_period will raise validation error.

display_note: type: string description:

The customer-facing note that can be displayed in a statement or email to the customer.

deprecated: true note: type: string description:

Any additional notes about the transaction.

payment_type: enum: - DD_FIRST_COLLECTION - DD_REGULAR_COLLECTION - DD_RE_PRESENTATION - DD_FINAL_COLLECTION - CREDIT_CARD - DEBIT_CARD - CHEQUE - BACS_DEPOSIT - ALLPAY_CASH - ALLPAY_CARD - ALLPAY_CHEQUE - PAYPOINT_CASH - PAYPOINT_CARD - PAYPOINT_CHEQUE - DCA_COLLECTION - BRISTOL_POUND - CASH - FUEL_DIRECT - BPAY - AUSTRALIA_POST - HEEA - HEEAS - CENTREPAY - EAPA_VOUCHER - URGS - BPOINT - EFT - ERRONEOUS_PAYMENT - PAYZONE - POST_OFFICE_CASH - POST_OFFICE_CARD - POST_OFFICE_CHEQUE - POST_OFFICE_SAVINGS_STAMPS - KONBINI - '' type: string x-spec-enum-id: e5c2d3475e079058 description:

The payment type for the transaction.

x-enum-descriptions: DD_FIRST_COLLECTION: DD_FIRST_COLLECTION DD_REGULAR_COLLECTION: DD_REGULAR_COLLECTION DD_RE_PRESENTATION: DD_RE_PRESENTATION DD_FINAL_COLLECTION: DD_FINAL_COLLECTION CREDIT_CARD: CREDIT_CARD DEBIT_CARD: DEBIT_CARD CHEQUE: CHEQUE BACS_DEPOSIT: BACS_DEPOSIT ALLPAY_CASH: ALLPAY_CASH ALLPAY_CARD: ALLPAY_CARD ALLPAY_CHEQUE: ALLPAY_CHEQUE PAYPOINT_CASH: PAYPOINT_CASH PAYPOINT_CARD: PAYPOINT_CARD PAYPOINT_CHEQUE: PAYPOINT_CHEQUE DCA_COLLECTION: DCA_COLLECTION BRISTOL_POUND: BRISTOL_POUND CASH: CASH FUEL_DIRECT: FUEL_DIRECT BPAY: BPAY AUSTRALIA_POST: AUSTRALIA_POST HEEA: HEEA HEEAS: HEEAS CENTREPAY: CENTREPAY EAPA_VOUCHER: EAPA_VOUCHER URGS: URGS BPOINT: BPOINT EFT: EFT ERRONEOUS_PAYMENT: ERRONEOUS_PAYMENT PAYZONE: PAYZONE POST_OFFICE_CASH: POST_OFFICE_CASH POST_OFFICE_CARD: POST_OFFICE_CARD POST_OFFICE_CHEQUE: POST_OFFICE_CHEQUE POST_OFFICE_SAVINGS_STAMPS: POST_OFFICE_SAVINGS_STAMPS KONBINI: Konbini '': '' reason: enum: - ACCOUNT_CHARGE_PAYMENT - BALANCE_ADJUSTMENT - GENERAL_CREDIT - SSD_PAYMENT - DEBT_REPAYMENT - PREPAY_RECORD - DEPOSIT - SETTLEMENT - BALANCE_THRESHOLD_CROSSED - BILL_ISSUED - PAYMENT_PLAN - REGULAR_SCHEDULE - REPAYMENT_CORRECTION - '' type: string x-spec-enum-id: 33061fb88f6290b0 description:

The reason for the transaction.

x-enum-descriptions: ACCOUNT_CHARGE_PAYMENT: Account charge payment BALANCE_ADJUSTMENT: Balance adjustment GENERAL_CREDIT: General credit SSD_PAYMENT: SSD payment DEBT_REPAYMENT: Debt repayment PREPAY_RECORD: Prepayment record DEPOSIT: Deposit SETTLEMENT: Settlement BALANCE_THRESHOLD_CROSSED: Balance threshold crossed BILL_ISSUED: Bill issued PAYMENT_PLAN: Planned payment REGULAR_SCHEDULE: Regular scheduled payment REPAYMENT_CORRECTION: Repayment correction '': '' reference: type: string description:

The reference for the transaction. This could be an external id to help identify this transaction.

to_prepay_meter_serial_number: type: string description: "

The serial number of the prepay meter that this transaction has been \"sent to\" (via a PPMIP).

\n

In the case of prepay vends, this \"sending\" was carried out by the customer paying\n at an outlet; as such, this field should always be populated for prepay vend transactions.

\n

In the case of credits and non-consumption charges applied to the customer's account\n pre-migration, this field should be populated only where a request to add the corresponding\n credit or debt to the prepay meter has been sent and accepted by the PPMIP.

" transaction_date: type: string format: date description:

The date of the transaction.

x-validators: - name: Validate transaction date description: Validates that the transaction date provided in the payload is not in the future. possible_errors: - transaction_in_future transaction_id: type: string description:

The unique internal identifier for the transaction.

required: - amount - transaction_date - transaction_id - type EnergyPrepaymentDetails: type: object properties: credit_balance: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The meter’s credit balance, in pounds, as of the closing date of the last statement.

debt_balance: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The meter’s debt balance, in pounds, as of the closing date of the last statement. Must be positive.

transfer_vend_read_date: type: string format: date description: "

The date that the transfer vend read was taken.

\n

This date should be exactly one day earlier than the last_billed_to_date, due to billing occurring as of midnight the day after the final reading on a given bill.

" required: - credit_balance - debt_balance - transfer_vend_read_date EnergyReading: type: object properties: reading_date: type: string format: date description:

The date the reading was taken from the meter.

reading_value: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The reading in kWh, with up to 2 decimals.

required: - reading_date - reading_value EnergyRepayment: type: object properties: type: enum: - CHARGE - PAYMENT - REPAYMENT - CREDIT - SUPPLY_CHARGE type: string x-spec-enum-id: 06d6aba5cee32f9a description:

The type of the transaction.

x-enum-descriptions: CHARGE: Charge PAYMENT: Payment REPAYMENT: Repayment CREDIT: Credit SUPPLY_CHARGE: Supply Charge amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type CHARGE of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

billing_document_identifier: type: string description:

The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER settings is ON and is meant for only historical_statements_transactions. Passing this to other transactions like current_statement_transactions or transactions_in_open_settlement_period will raise validation error.

display_note: type: string description:

The customer-facing note that can be displayed in a statement or email to the customer.

deprecated: true note: type: string description:

Any additional notes about the transaction.

payment_type: enum: - DIRECT_CREDIT - CARD_REFUND - BACS - CHEQUE - BPAY - '' type: string x-spec-enum-id: d2c4d6e823ed27aa description:

The payment type for the transaction.

x-enum-descriptions: DIRECT_CREDIT: DIRECT_CREDIT CARD_REFUND: CARD_REFUND BACS: BACS CHEQUE: CHEQUE BPAY: BPAY '': '' reason: enum: - FULL_CREDIT_REFUND - PARTIAL_CREDIT_REFUND - FULL_PREPAYMENT_REFUND - PARTIAL_REPAYMENT_REFUND - ET_REFUND - GENERATOR_ACCOUNT_REFUND - DOMESTIC_EXPORT_ONLY_REPAYMENT - FINAL_BALANCE_SETTLEMENT - MISTAKEN_PAYMENT_TAKEN - PAYMENT_CORRECTION - COMPLAINT_COMPENSATION - INDEMNITY_CLAIM - FAILED_PAYMENT - FEED_IN_TARIFF_PAYMENT - GSOS_PAYMENT - SEG_PAYMENT - DEPOSIT_RETURN - LATE_FAILED_PAYMENT - CANCELED_BILL - BILLING_ADJUSTMENT - ETF_CREDIT - FAST_TRACK - CHARGEBACK - '' type: string x-spec-enum-id: 8c2641888a5bbff8 description:

The reason for the transaction.

x-enum-descriptions: FULL_CREDIT_REFUND: Full credit refund PARTIAL_CREDIT_REFUND: Partial credit refund FULL_PREPAYMENT_REFUND: Full prepayment refund PARTIAL_REPAYMENT_REFUND: Partial prepayment refund ET_REFUND: Full credit refund - ET GENERATOR_ACCOUNT_REFUND: Full credit refund - Generator Account DOMESTIC_EXPORT_ONLY_REPAYMENT: Domestic export-only account repayment FINAL_BALANCE_SETTLEMENT: Final balance settlement MISTAKEN_PAYMENT_TAKEN: Objection - payment taken in error PAYMENT_CORRECTION: Payment correction COMPLAINT_COMPENSATION: Complaint Compensation INDEMNITY_CLAIM: Indemnity claim FAILED_PAYMENT: Failed payment FEED_IN_TARIFF_PAYMENT: Feed-in-Tariff payment GSOS_PAYMENT: Guaranteed Standard of Service payment SEG_PAYMENT: SEG Payment DEPOSIT_RETURN: Held deposit return LATE_FAILED_PAYMENT: Late failed payment CANCELED_BILL: Canceled Bill(s) BILLING_ADJUSTMENT: Billing Adjustment ETF_CREDIT: ETF Credit FAST_TRACK: Fast Track CHARGEBACK: Chargeback '': '' reference: type: string description:

The reference for the transaction. This could be an external id to help identify this transaction.

to_prepay_meter_serial_number: type: string description: "

The serial number of the prepay meter that this transaction has been \"sent to\" (via a PPMIP).

\n

In the case of prepay vends, this \"sending\" was carried out by the customer paying\n at an outlet; as such, this field should always be populated for prepay vend transactions.

\n

In the case of credits and non-consumption charges applied to the customer's account\n pre-migration, this field should be populated only where a request to add the corresponding\n credit or debt to the prepay meter has been sent and accepted by the PPMIP.

" transaction_date: type: string format: date description:

The date of the transaction.

x-validators: - name: Validate transaction date description: Validates that the transaction date provided in the payload is not in the future. possible_errors: - transaction_in_future transaction_id: type: string description:

The unique internal identifier for the transaction.

required: - amount - transaction_date - transaction_id - type EnergySmartRefusalInterest: type: object properties: date: type: string format: date description:

The date the customer informed of interest or refusal of a smart meter installation.

refusal_reason: enum: - DO_NOT_OWN_HOME - TECHNOLOGY_SCEPTICAL - WORRIED_SECURITY - WORRIED_HEALTH_SAFETY - NEGATIVE_PUBLICITY - WORRIED_ABOUT_USAGE_COST - ALREADY_HAS_SMART_METER - HOUSE_MOVE_IMMINENT - SWITCH_IMMINENT - MORE_INFORMATION_REQUIRED - IS_LANDLORD - CANNOT_SEE_BENEFIT - WAIT_UNTIL_IT_IS_COMPULSORY - VULNERABILITY - WORRIED_ABOUT_SMART_METERS - WORRIED_ABOUT_INSTALLATION - PROPERTY_NOT_OCCUPIED - CANNOT_ATTEND_APPOINTMENT type: string x-spec-enum-id: 49cfaa7d86024f46 description:

The reason why a customer refused to have a smart meter installed, if applicable.

x-enum-descriptions: DO_NOT_OWN_HOME: Doesn't own home TECHNOLOGY_SCEPTICAL: Sceptical of technology WORRIED_SECURITY: Worried about security WORRIED_HEALTH_SAFETY: Worried about health & safety NEGATIVE_PUBLICITY: Negative publicity about smart meters WORRIED_ABOUT_USAGE_COST: Worried about energy usage cost increasing ALREADY_HAS_SMART_METER: Already has or is about to have a smart meter installed HOUSE_MOVE_IMMINENT: About to move house SWITCH_IMMINENT: About to switch supplier MORE_INFORMATION_REQUIRED: More information about smart meters required IS_LANDLORD: Is a landlord CANNOT_SEE_BENEFIT: Cannot see benefit WAIT_UNTIL_IT_IS_COMPULSORY: Wants to wait until it's compulsory VULNERABILITY: Has vulnerability WORRIED_ABOUT_SMART_METERS: Worried about smart meters WORRIED_ABOUT_INSTALLATION: Worried about installation PROPERTY_NOT_OCCUPIED: Property rarely or never occupied CANNOT_ATTEND_APPOINTMENT: Cannot attend appointment source: enum: - WEBSITE - EMAIL - OTHER type: string x-spec-enum-id: 446c7a215c19e2c2 description:

How the customer got in touch about their interest/refusal.

x-enum-descriptions: WEBSITE: Website EMAIL: Email OTHER: Other type: enum: - NOT_INTERESTED - INTERESTED - NOT_AT_THE_MOMENT type: string x-spec-enum-id: 1eb9432d579db1e2 description:

Whether the customer indicated interest or refusal towards a smart meter installation.

x-enum-descriptions: NOT_INTERESTED: Not interested INTERESTED: Interested NOT_AT_THE_MOMENT: Not at the moment required: - date - type x-validators: - name: Validate smart refusal reason description: Validate that the smart refusal_reason is only provided if the interest type is not INTERESTED. possible_errors: - smart_refusal_reason_given_for_interest EnergySmartSiteVisit: type: object properties: additional_data: default: {} description:

Any additional data to be stored for the appointment, e.g. the asset condition code or additional details relating to the outcome.

appointment_notes: type: string description:

Notes on the appointment.

maxLength: 2048 date: type: string format: date description:

The date the appointment took place.

metering_agent: enum: - GENERIC_AGENT - TTE_FACILITA - SMS - AES - OES - PROVIDOR - MDS - EON_METERING - LOWRI_BECK - METERPLUS - ENTERPRISE_MANAGED - MIDS_ELEC - N_POWERGRID - ELEC_NW - NATIONAL_GRID - SGN - ENERGY_ASSETS - SIEMENS - LONDON - SWEB - ECM - OESL - EDF_FIELD - ESSENTIAL_FIELD - ESSENTIAL_WATER_FIELD - IFS - SAP type: string x-spec-enum-id: c85f6b3af37b9bb8 description:

The metering agent performing the appointment.

x-enum-descriptions: GENERIC_AGENT: Generic Agent TTE_FACILITA: Total Energies Facilita SMS: Smart Metering Systems AES: AES Smart Metering OES: Octopus Energy Services PROVIDOR: Providor Ltd MDS: Morrison Data Services EON_METERING: E.on Metering LOWRI_BECK: Lowri Beck Services Ltd METERPLUS: MeterPlus ENTERPRISE_MANAGED: Enterprise Managed Services Ltd MIDS_ELEC: Midlands Electricity plc N_POWERGRID: Northern Powergrid ELEC_NW: Electricity North West Limited NATIONAL_GRID: National Grid SGN: SGN Metering Services ENERGY_ASSETS: Energy Assets Ltd SIEMENS: Siemens Metering Services LONDON: EDF Energy Customers Ltd SWEB: EDF Energy Customers Ltd (SWEB) ECM: EDF Energy Customers PLC OESL: Octopus Energy Services Ltd EDF_FIELD: EDF Field Services ESSENTIAL_FIELD: Essential Energy Field Services ESSENTIAL_WATER_FIELD: Essential Water Field Services IFS: IFS SAP: SAP reference_number: type: string description:

A reference number for the appointment.

maxLength: 1024 status: enum: - CANCELLED - ABORTED - SUCCESSFUL type: string x-spec-enum-id: 001bb9ff997bfc09 description:

The status of the appointment.

x-enum-descriptions: CANCELLED: Appointment cancelled ABORTED: Appointment attempted and aborted SUCCESSFUL: Appointment successful work_category: enum: - IHD_INSTALL - NEW_CONNECTION - REMOVE - EXCHANGE - OTHER - MOVE - CONFIRM_METER_DETAILS - ENERGISE - DE_ENERGISE - INVESTIGATE_FAULT type: string x-spec-enum-id: 5660d2d525cfbc07 description:

The work category of the appointment.

x-enum-descriptions: IHD_INSTALL: IHD install NEW_CONNECTION: New connection REMOVE: Remove meter EXCHANGE: Meter exchange OTHER: Other MOVE: Meter move CONFIRM_METER_DETAILS: Confirm meter details ENERGISE: Energise supply DE_ENERGISE: De-energise supply INVESTIGATE_FAULT: General fault investigation required: - date - metering_agent - reference_number - status - work_category EnergySupplyCharge: type: object properties: type: enum: - CHARGE - PAYMENT - REPAYMENT - CREDIT - SUPPLY_CHARGE type: string x-spec-enum-id: 06d6aba5cee32f9a description:

The type of the transaction.

x-enum-descriptions: CHARGE: Charge PAYMENT: Payment REPAYMENT: Repayment CREDIT: Credit SUPPLY_CHARGE: Supply Charge amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type CHARGE of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

billing_document_identifier: type: string description:

The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER settings is ON and is meant for only historical_statements_transactions. Passing this to other transactions like current_statement_transactions or transactions_in_open_settlement_period will raise validation error.

display_note: type: string description:

The customer-facing note that can be displayed in a statement or email to the customer.

line_items: type: array items: $ref: '#/components/schemas/LineItem' description:

For SUPPLY_CHARGE transactions only, line items contain details about the charge, e.g. standing/consumption charge, billing period, number of units etc.

note: type: string description:

Any additional notes about the transaction.

product_code: type: string description:

The product code for the product that the transaction is associated with.

x-validators: - name: Validate product code exists description: Validate that the product code exists in Kraken. possible_errors: - product_code_does_not_exist supply_point_identifier: type: string description:

Supply point identifier associated with the supply point this charge applies to.

tax_items: type: array items: $ref: '#/components/schemas/TaxItem' description:

For SUPPLY_CHARGE and CHARGE transactions only, tax items contain details about the tax. If not provided will be set to default zero tax.

to_prepay_meter_serial_number: type: string description: "

The serial number of the prepay meter that this transaction has been \"sent to\" (via a PPMIP).

\n

In the case of prepay vends, this \"sending\" was carried out by the customer paying\n at an outlet; as such, this field should always be populated for prepay vend transactions.

\n

In the case of credits and non-consumption charges applied to the customer's account\n pre-migration, this field should be populated only where a request to add the corresponding\n credit or debt to the prepay meter has been sent and accepted by the PPMIP.

" transaction_date: type: string format: date description:

The date of the transaction.

x-validators: - name: Validate transaction date description: Validates that the transaction date provided in the payload is not in the future. possible_errors: - transaction_in_future transaction_id: type: string description:

The unique internal identifier for the transaction.

required: - amount - line_items - product_code - transaction_date - transaction_id - type x-validators: - name: Validates supply charge line item rate description: This validation only applies to transactions of type supply charge. Validates that product code is provided and a product exists with that code. Validates that line items are provided and each line item rate band exists for the product. possible_errors: [] - name: Validate that the given price per unit matches an existing rate price per unit description: Validate that the given price per unit matches an existing rate price per unit. If the existing rate is a dynamic rate (i.e. it has a NaN price per unit), then there must be a price per unit in the payload. possible_errors: [] - name: Validate line item number of units description: Validate that the line item number of units matches the number of days in the period provided for standing charges. possible_errors: [] - name: Validate that the total transaction amount is correct description: Ensure that the total line items amount matches transaction amount. possible_errors: - ledger_transaction_amount_does_not_match_with_line_item_net_amount_and_tax_amount - name: Ensure supply point identifier is provided when line items use rate_specification_code description: Validate that supply_point_identifier is provided when any line item contains a rate_specification_code, as the supply point is required for rate resolution. possible_errors: - supply_point_identifier_required_for_rate_specification_code - name: Validate that the line items do not overlap with any already charged periods description: Validate that the line item periods do not overlap with any already charged periods for a supply point. possible_errors: - line_items_overlap_already_charged_period EnergyTaxExemption: type: object properties: effective_from: type: string format: date description:

Date this exemption entry is valid from.

effective_to: type: string format: date description:

Date this exemption entry is valid to.

rate: type: string format: decimal pattern: ^-?\d{0,1}(?:\.\d{0,2})?$ description:

The normalised proportion of energy use on the meter point that qualifies for the tax exemption. (e.g. 1.0 for 100% exemption).

required: - effective_from - rate x-validators: - name: Validate ⁨effective_to⁩ not before or equal to ⁨effective_from⁩ description: Validates that ⁨effective_to⁩, if given, is strictly later than ⁨effective_from⁩. possible_errors: - start_date_same_as_end_date EnergyTransaction: oneOf: - $ref: '#/components/schemas/EnergyCredit' - $ref: '#/components/schemas/EnergyCharge' - $ref: '#/components/schemas/EnergyPayment' - $ref: '#/components/schemas/EnergyRepayment' - $ref: '#/components/schemas/EnergySupplyCharge' discriminator: propertyName: type mapping: CREDIT: '#/components/schemas/EnergyCredit' CHARGE: '#/components/schemas/EnergyCharge' PAYMENT: '#/components/schemas/EnergyPayment' REPAYMENT: '#/components/schemas/EnergyRepayment' SUPPLY_CHARGE: '#/components/schemas/EnergySupplyCharge' EnergyWarmHomeDiscount: type: object properties: account_type: enum: - CREDIT - PREPAY type: string x-spec-enum-id: e2d76ba01d4b80c7 default: CREDIT description:

The type of account for the purpose of paying out the credit.

x-enum-descriptions: CREDIT: Credit PREPAY: Prepay group: enum: - CORE - BROADER type: string x-spec-enum-id: 975493b69d4a0894 default: CORE description:

Whether the customer falls into the core or broader group.

x-enum-descriptions: CORE: Core group BROADER: Broader group tax_year: type: string description:

The tax year that the warm home discount was paid.

x-validators: - name: Validate tax year format description: Validate that the tax year is provided in a YYYY/YY format. e.g. 2018/19. possible_errors: - incorrect_format_for_tax_year ErrorCreatingTransactions: type: object properties: error_detail: type: string description:

If transaction creation failed, then this field will provide details of the error.

status: enum: - TRANSACTION_ADDED_TO_ACCOUNT - TRANSACTION_ALREADY_EXISTS - TRANSACTION_IMPORT_ERROR type: string x-spec-enum-id: 5a92d022962e1cea description:

The status of the transaction.

x-enum-descriptions: TRANSACTION_ADDED_TO_ACCOUNT: Transaction added to account TRANSACTION_ALREADY_EXISTS: Transaction already exists TRANSACTION_IMPORT_ERROR: Transaction import error transaction_data: allOf: - $ref: '#/components/schemas/TransactionData' description:

The data associated with the transaction that caused this error.

required: - error_detail - status - transaction_data ErrorResponse: type: object properties: code: type: string description:

The code for the error.

detail: type: string description:

A description of the error.

required: - code - detail ExistingPaymentInstructionReference: type: object properties: vendor_name: enum: - STRIPE - BOTTOMLINE_GLOBAL_PAYMENTS_HUB - BOTTOMLINE_PTX - BOTTOMLINE_PTX_BATCHED type: string x-spec-enum-id: cd9cdc0ef05270d9 description:

The payment vendor (e.g., gocardless, stripe) for the payment instruction.

x-enum-descriptions: STRIPE: Stripe BOTTOMLINE_GLOBAL_PAYMENTS_HUB: Bottomline Global Payments Hub BOTTOMLINE_PTX: Bottomline PTX BOTTOMLINE_PTX_BATCHED: Bottomline PTX Batched vendor_reference: type: string description:

The reference of the mandate as known by the vendor for the payment instruction.

maxLength: 512 required: - vendor_name - vendor_reference GasAgreement: type: object properties: agreed_at: type: string format: date-time nullable: true description:

The datetime the agreement was agreed at.

bespoke_tariff_rates: type: array items: $ref: '#/components/schemas/GasBespokeGasTariffRate' description:

List of bespoke tariff rates applicable to this agreement. Usually only relevant for business accounts.

x-validators: - name: Validate that all bespoke tariff rates are unique description: Ensure that there are no duplicate bespoke tariff rates provided. possible_errors: - duplicate_bespoke_rates business_contract_identifier: type: string nullable: true description:

The identifier of the business contract this agreement should be linked to.

characteristics: type: array items: $ref: '#/components/schemas/ProductCharacteristic' nullable: true description:

Characteristics of the agreed product that the customer has chosen.

x-validators: - name: Validate that each child has unique values for the ⁨code⁩ field description: Validate that each child has unique values for the ⁨code⁩ field. possible_errors: - children_with_duplicate_values effective_from: type: string format: date description:

The date from which the agreement is effective (inclusive), i.e. the agreement starts on the midnight of this date, such that this date becomes the first day covered by this agreement.

effective_to: type: string format: date nullable: true description:

The date to which the agreement is effective (exclusive), i.e. the agreement will end on the midnight of this date, such that the previous day is the last day covered by this agreement.

intermediary: allOf: - $ref: '#/components/schemas/AgreementIntermediaryDetails' nullable: true description:

Details about the intermediary relationship for this agreement. When provided, an intermediary link will be created between the agreement and the portfolio, establishing a business intermediary relationship.

rate_overrides: type: array items: $ref: '#/components/schemas/RateOverride' nullable: true description:

Agreement rate overrides.

rates_agreed_at: type: string format: date-time nullable: true description:

The datetime the rates were agreed at.

tariff_code: type: string description:

The code for the agreement tariff. Must match an existing tariff code of an active product.

x-validators: - name: Validate gas tariff exists description: Validate that the provided tariff code has an existing gas tariff in Kraken. possible_errors: - tariff_code_not_found required: - effective_from - tariff_code x-validators: - name: Validate ⁨effective_to⁩ not before ⁨effective_from⁩ description: Validates that ⁨effective_to⁩, if given, is on or later than ⁨effective_from⁩. 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 register_id or rate_type are provided for bespoke tariff rate registers description: Ensure that all registers associated with a bespoke tariff rate have got at least a register_id or a rate_type 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 GasAnnualQuantity: type: object properties: consumption: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The AQ consumption value in KWh.

effective_from: type: string format: date description:

The start date of the AQ entry.

effective_to: type: string format: date nullable: true description:

The end date of the AQ entry. Leave empty for an open ended AQ entry.

source: type: string description:

The source of the AQ entry. This would ordinarily be from a flow file, in which case this should be the value of the field. In other cases this may have come from another source, in which case that can be entered here too.

maxLength: 255 required: - consumption - effective_from x-validators: - name: Validate ⁨effective_to⁩ not before ⁨effective_from⁩ description: Validates that ⁨effective_to⁩, if given, is on or later than ⁨effective_from⁩. possible_errors: - start_date_later_than_end_date GasBespokeGasTariffRate: type: object properties: meter_serial_number: type: string description:

Meter serial number to which this bespoke tariff applies

maxLength: 32 payment_method: enum: - DD - NDD - PP - '' - null type: string x-spec-enum-id: 362e54c421bbcaea nullable: true description:

The payment method for the bespoke rate. Only used for payment price switching enabled bespoke rates.

x-enum-descriptions: DD: Direct Debit NDD: Non-Direct Debit PP: Prepayment '': '' None: None standing_charge: type: string format: decimal pattern: ^-?\d{0,7}(?:\.\d{0,5})?$ description:

The value in pence per day of the charge (excluding VAT).

unit_rate: type: string format: decimal pattern: ^-?\d{0,7}(?:\.\d{0,5})?$ description:

The value in pence per kWh of the charge (excluding VAT). This field should only be provided for gas meters. For electricity meters this value is provided on the registers array.

required: - standing_charge - unit_rate GasMeter: type: object properties: gas_number_of_digits: type: integer maximum: 15 minimum: 1 description:

The number of digits of the meter.

installed_on: type: string format: date nullable: true description:

The date the meter was installed.

is_prepay: type: boolean default: false description:

Whether the meter is a prepay meter or not.

last_billed_to_date: type: string format: date description:

The date up to which consumption has been billed to for the meter. This is optional, but if not included here it must appear at the account level, unless the meter is not on-supply.

meter_serial_number: type: string description:

The serial number of the meter.

maxLength: 32 x-validators: - name: Validate meter serial number description: Validate that the meter serial number for a gas or electricity meter conforms to the specified industry format. possible_errors: - blank - invalid_meter_serial_number - supply_type_not_recognised prepay_customer_reference_number: type: string description:

The customer reference number for the prepay meter, as required for communication with the meter provider. Required if the is_prepay flag is set to true for an electricity meter and the migration involves no on-market switch.

maxLength: 20 x-validators: - name: Validate prepay customer reference number description: For electricity prepay meters only, validates that the prepay customer reference number can be converted into an integer. Any whitespace is removed before validating. possible_errors: - invalid_prepay_customer_reference_number prepay_details: allOf: - $ref: '#/components/schemas/GasPrepaymentDetails' description:

Financial information relating to the prepay meter. Only applicable to prepay meters.

reading_history: type: array items: $ref: '#/components/schemas/HistoricalReading' description:

A list of historical readings for the meter. Generally these are readings prior to the one(s) provided under transfer_readings. It is possible to provide readings here after the corresponding transfer reading date, but these must unbilled.

removed_on: type: string format: date nullable: true description:

The date the meter was removed, if this was an exchanged meter.

smart_commissioned_on: type: string format: date nullable: true description:

The date on which the smart meter was commissioned. Optional if the meter is a smart meter, and should not be provided otherwise.

x-validators: - name: Validate that the commissioned on date is valid description: Ensure that the commissioned on date is not in the future. possible_errors: - future_smart_meter_commission_date smart_device_id: type: string nullable: true description:

The device ID of the smart meter (e.g. "01-23-45-67-89-AB-CD-EF"). Optional if the meter is a smart meter, and should not be provided otherwise.

x-validators: - name: Validate that the smart device ID is valid description: Ensure that the smart device ID is valid. possible_errors: - invalid_smart_device_id smart_type: enum: - NONE - SMETS1 - SMETS1_ENROLLED - SMETS2 type: string x-spec-enum-id: 0184b2482cb83b37 default: NONE description:

The type of smart meter, or NONE if it is not a smart meter. SMETS1 meters that have been through the Enrolment and Adoption (E&A) process should be marked as SMETS1_ENROLLED.

x-enum-descriptions: NONE: None SMETS1: SMETS1 SMETS1_ENROLLED: SMETS1-enrolled SMETS2: SMETS2 transfer_readings: type: array items: $ref: '#/components/schemas/Reading' description: "

The last reading (or readings, if the meter is ECO7 or ECO10) the account has been billed up to. If the account has never been billed, the SSD reading(s) must be provided instead.

\n

For electricity meter points, a transfer reading should be given per settlement register for each active meter. For gas meter points, a transfer reading should be given for each active meter.

\n

The date for each transfer reading should match the corresponding last_billed_to_date for the meter or register.

" units_of_measure: enum: - SCFH - SCMH type: string x-spec-enum-id: fe9a347642a12612 default: SCMH description:

Units of measure for gas meters. Defaults to SCMH (cubic metres).

x-enum-descriptions: SCFH: SCFH SCMH: SCMH required: - gas_number_of_digits - meter_serial_number x-validators: - 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 GasMeterPoint: type: object properties: supply_type: enum: - ELECTRICITY - GAS type: string x-spec-enum-id: 38ea23eee479fe46 description:

The supply type of this meter point.

x-enum-descriptions: ELECTRICITY: Electricity GAS: Gas agreements: type: array items: $ref: '#/components/schemas/GasAgreement' description:

List of agreements linked to the supply point.

aq_history: type: array items: $ref: '#/components/schemas/GasAnnualQuantity' description:

History of gas Annual Quantity (AQ) entries for this meter point. It's expected that at least one AQ entry will be provided for the current period if there's an active gas meter. Gaps and overlapping on the given entry dates will raise validation errors.

x-validators: - name: Validate that at most one open-ended AQ entry is present in the AQ history description: Ensure that there are not multiple open-ended Annual Quantity (AQ) entries in the AQ History for a gas meter point. possible_errors: - multiple_open_ended_aqs_in_meterpoint_aq_history - name: Validate that there are no gaps in the AQ history description: Validate that, where multiple entires are present in the AQ history, each entry starts (effective_from) a day after it's predecessor's end (effective_to). possible_errors: - gaps_or_overlaps_in_aq_history ccl_exemptions: type: array items: $ref: '#/components/schemas/EnergyTaxExemption' description:

A list of CCL exemptions for the meter point. Must only be provided for business accounts.

x-validators: - name: Validate tax exemption end dates description: Validate that there is only one open ended tax exemption. possible_errors: - multiple_open_ended_tax_exemptions - name: Validate no overlapping tax exemptions description: Validate any tax exemptions are not overlapping. possible_errors: - overlapping_effective_dates_for_tax_exemptions dr_in_progress: type: boolean nullable: true description:

Whether a disputed reading (DR) is in progress for this meter point. This should be resolved before importing the account, and a validation error will be raised if this field is set to true.

x-validators: - name: Validate that no disputed reads are in progress description: The validation process will be stopped if a disputed read is in progress. possible_errors: - disputed_read_in_progress et_in_progress: type: boolean nullable: true description:

Whether an erroneous transfer (ER) is in progress for this meter point. This should be resolved before importing the account, and a validation error will be raised if this field is set to true.

x-validators: - name: Validate that no erroneous transfers are in progress description: The validation process will be stopped if an erroneous transfer is in progress. possible_errors: - erroneous_transfer_not_in_progress identifier: type: string description:

The unique identifier for the supply point.

x-validators: - name: Validate the supply point identifier description: Validate that the supply point identifier in the payload is valid for the territory that the account is importing in. possible_errors: - invalid_supply_point_identifier last_billed_to_date: type: string format: date description:

Date up to which consumption has been billed on the supply point.

If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.

If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.

This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.

ldz: enum: - SC - LC - LO - LS - LT - LW - 'NO' - NE - NW - WM - EM - EA - WN - WS - NT - SO - SE - SW - '' type: string x-spec-enum-id: 8f2ab9146991510c description:

The Local Distribution Zone code for a gas meter point. This will be superseded by any data received from industry at a later date, but allows faster progress in the short term if provided.

x-enum-descriptions: SC: Scotland LC: Scotland Campbeltown LO: Scotland Oban LS: Scotland Stranraer LT: Scotland Thurso LW: Scotland Wick 'NO': Northern NE: North East NW: North West WM: West Midlands EM: East Midlands EA: East Anglia WN: Wales North WS: Wales South NT: North Thames SO: Southern SE: South East SW: South West '': '' mam_to_appoint: type: string nullable: true description:

The meter asset manager (MAM) to appoint for the meter point. This value should only be provided for an on-market switch.

maxLength: 3 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 meters: type: array items: $ref: '#/components/schemas/GasMeter' description:

A list of active and exchanged meters on the meter point.

mpid: type: string description:

The Market Participant ID (MPID) for this meter point.

maxLength: 4 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 regular_reading_cycle: enum: - CYYY - CYSS - CYQS - CYLM - CYSM - CYNM type: string x-spec-enum-id: d57930394e6392a7 description:

The regular reading cycle of the meter point, as it should be passed to agents via flows.

x-enum-descriptions: CYYY: No read required CYSS: 6-monthly CYQS: Quarterly CYLM: Large monthly CYSM: Small monthly CYNM: Non-monthly shipper_mpid: type: string description:

The shipper market participant ID for this meter point.

maxLength: 3 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 smart_refusal_interest: allOf: - $ref: '#/components/schemas/EnergySmartRefusalInterest' description:

Details on the customer's interest in installing a smart meter for this meter point.

smart_site_visit: type: array items: $ref: '#/components/schemas/EnergySmartSiteVisit' description:

A list of site visit appointments for installing a smart meter for the meter point.

supply_end_date: type: string format: date nullable: true description:

The supply start date for this meter point. See supply_periods as an alternative.

supply_start_date: type: string format: date description:

The supply end date for this meter point. See supply_periods as an alternative.

vat_exemptions: type: array items: $ref: '#/components/schemas/EnergyTaxExemption' description:

A list of VAT exemptions for the meter point. Must only be provided for business accounts.

x-validators: - name: Validate tax exemption end dates description: Validate that there is only one open ended tax exemption. possible_errors: - multiple_open_ended_tax_exemptions - name: Validate no overlapping tax exemptions description: Validate any tax exemptions are not overlapping. possible_errors: - overlapping_effective_dates_for_tax_exemptions required: - identifier - mpid - shipper_mpid - supply_start_date - supply_type x-validators: - name: Validate ⁨supply_end_date⁩ not before ⁨supply_start_date⁩ description: Validates that ⁨supply_end_date⁩, if given, is on or later than ⁨supply_start_date⁩. 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 GasPrepayDebtRepaymentOptions: type: object properties: weekly_max: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The maximum amount, in pounds, that a customer needs to pay towards their debt each week. Must be positive. Defaults to "0.0".

weekly_min: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The minimum amount, in pounds, that a customer needs to pay towards their debt each week. Must be positive. Defaults to "0.0".

GasPrepaymentDetails: type: object properties: credit_balance: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The meter’s credit balance, in pounds, as of the closing date of the last statement.

debt_balance: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The meter’s debt balance, in pounds, as of the closing date of the last statement. Must be positive.

gas_debt_repayment_options: allOf: - $ref: '#/components/schemas/GasPrepayDebtRepaymentOptions' description:

Debt repayment options that are used when sending SQO1 flows.

transfer_vend_read_date: type: string format: date description: "

The date that the transfer vend read was taken.

\n

This date should be exactly one day earlier than the last_billed_to_date, due to billing occurring as of midnight the day after the final reading on a given bill.

" required: - credit_balance - debt_balance - transfer_vend_read_date Gbr-electricity.meter-rate-profileCharacteristic: type: object properties: code: enum: - gbr-electricity.meter-rate-profile type: string x-spec-enum-id: 28916dd92444330c description:

The code for the product's characteristic.

x-enum-descriptions: gbr-electricity.meter-rate-profile: gbr-electricity.meter-rate-profile value: enum: - flat_rate - multi_rate type: string x-spec-enum-id: d91192778ca62ec1 description:

The value for the product's characteristic.

x-enum-descriptions: flat_rate: flat_rate multi_rate: multi_rate required: - code - value Gbr-electricity.payment-methodCharacteristic: type: object properties: code: enum: - gbr-electricity.payment-method type: string x-spec-enum-id: c402d26d7be7d434 description:

The code for the product's characteristic.

x-enum-descriptions: gbr-electricity.payment-method: gbr-electricity.payment-method value: enum: - NON_DIRECT_DEBIT - PREPAYMENT - DIRECT_DEBIT type: string x-spec-enum-id: be9d79ba8600c118 description:

The value for the product's characteristic.

x-enum-descriptions: NON_DIRECT_DEBIT: NON_DIRECT_DEBIT PREPAYMENT: PREPAYMENT DIRECT_DEBIT: DIRECT_DEBIT required: - code - value Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic: type: object properties: code: enum: - gbr-gas.meter-point-grid-supply-point-equivalent type: string x-spec-enum-id: 4fdb32aea30162c9 description:

The code for the product's characteristic.

x-enum-descriptions: gbr-gas.meter-point-grid-supply-point-equivalent: gbr-gas.meter-point-grid-supply-point-equivalent value: enum: - _E - _H - _D - _M - _A - _F - _K - _P - _C - _L - _N - _B - _J - _G type: string x-spec-enum-id: d048de00415a8431 description:

The value for the product's characteristic.

x-enum-descriptions: _E: _E _H: _H _D: _D _M: _M _A: _A _F: _F _K: _K _P: _P _C: _C _L: _L _N: _N _B: _B _J: _J _G: _G required: - code - value Gbr-gas.payment-methodCharacteristic: type: object properties: code: enum: - gbr-gas.payment-method type: string x-spec-enum-id: 8ef23889e07cff46 description:

The code for the product's characteristic.

x-enum-descriptions: gbr-gas.payment-method: gbr-gas.payment-method value: enum: - NON_DIRECT_DEBIT - PREPAYMENT - DIRECT_DEBIT type: string x-spec-enum-id: be9d79ba8600c118 description:

The value for the product's characteristic.

x-enum-descriptions: NON_DIRECT_DEBIT: NON_DIRECT_DEBIT PREPAYMENT: PREPAYMENT DIRECT_DEBIT: DIRECT_DEBIT required: - code - value GbrMeterPointRegistrationStatus: type: object properties: error_detail: type: string title: Description of the registration error description:

The description of the error when attempting to register the meter point.

mpxn: type: string title: MPRN or MPAN of the meter point description:

The MPRN or MPAN of the meter point.

status: enum: - REGISTRATION_FLOW_SUCCESS - REGISTRATION_FLOW_ERROR type: string x-spec-enum-id: f70694660fe4e8d5 title: Registration status of the meter point description:

The status of the meter point's registration.

x-enum-descriptions: REGISTRATION_FLOW_SUCCESS: REGISTRATION_FLOW_SUCCESS REGISTRATION_FLOW_ERROR: REGISTRATION_FLOW_ERROR required: - mpxn - status GbrMeterPointRegistrationStatuses: type: object properties: external_account_number: type: string title: The account number on the import suppliers system. description:

The account number in the source system.

import_supplier_code: type: string title: The code of an existing ImportSupplier in the database. description:

The import supplier code that the meter point registration is associated with.

meter_points: type: array items: $ref: '#/components/schemas/GbrMeterPointRegistrationStatus' title: List of MPxNs and their registration status description:

A list of MPRNs or MPANs and their associated registration statuses.

required: - external_account_number - import_supplier_code - meter_points GbrMeterPointStatus: type: object properties: mpxn: type: string title: MPRN or MPAN of the meter point description:

The MPAN or MPRN of the meter point.

status: enum: - PRE_REGISTRATION - UNABLE_TO_REGISTER - AREGI_SENT - NOMINATION_SENT - NOMINATION_REJECTED - OFFER_RECEIVED - OFFER_REJECTED - REGISTRATION_REQUESTED - REGISTRATION_ACCEPTED - REGISTRATION_REJECTED - WITHDRAWAL_REQUESTED - REGISTRATION_WITHDRAWN - OBJECTION_RECEIVED - REGISTRATION_OBJECTED - MTD_RECEIVED - ON_SUPPLY - OPENING_READ_DISPUTED - MTD_DISPUTED - METER_EXCHANGE_REQUESTED - ERRONEOUS_GAIN_PROPOSED - ERRONEOUS_GAIN_ACCEPTED - ERRONEOUS_GAIN_REJECTED - ERRONEOUS_GAIN_CANCELLED - LOSS_REQUESTED_ERRONEOUS_GAIN - LOSS_PENDING_ERRONEOUS_GAIN - LOST_ERRONEOUS_GAIN - ERRONEOUS_LOSS_PROPOSED - ERRONEOUS_LOSS_ACCEPTED - ERRONEOUS_LOSS_REJECTED - ERRONEOUS_LOSS_CANCELLED - ET_REQUESTED - ET_ACCEPTED - ET_LOSS_PENDING - ET_COMPLETED - ET_CANCELLED - LOSS_REQUESTED - LOSS_PENDING - LOST - DISCONNECTED - ERRONEOUS_LOSS - LOSS_OBJECTION_REQUESTED - LOSS_OBJECTION_REMOVAL_REQUESTED - LOSS_OBJECTION_ACCEPTED - CLOSING_READ_DISPUTE - DE-ENERGISED - UNDERGOING_REGISTRATION - REGISTRATION_AT_RISK - GAIN_PENDING_DAP - LOSS_PENDING_DAP type: string x-spec-enum-id: fd4bdf1c2ccdefa1 title: Kraken status of the meter point description:

The status of the meter point.

x-enum-descriptions: PRE_REGISTRATION: Pre-Registration UNABLE_TO_REGISTER: Unable to Register AREGI_SENT: AREGI Sent NOMINATION_SENT: Nomination Sent NOMINATION_REJECTED: Nomination Rejected OFFER_RECEIVED: Offer Received OFFER_REJECTED: Offer Rejected REGISTRATION_REQUESTED: Registration Requested REGISTRATION_ACCEPTED: Registration Accepted REGISTRATION_REJECTED: Registration Rejected WITHDRAWAL_REQUESTED: Withdrawal Requested REGISTRATION_WITHDRAWN: Registration Withdrawn OBJECTION_RECEIVED: Objection Received REGISTRATION_OBJECTED: Registration Objected MTD_RECEIVED: Meter Details Received ON_SUPPLY: On Supply OPENING_READ_DISPUTED: Opening Read Disputed MTD_DISPUTED: Meter Details Disputed METER_EXCHANGE_REQUESTED: Meter Exchange Requested ERRONEOUS_GAIN_PROPOSED: Erroneous Gain Proposed ERRONEOUS_GAIN_ACCEPTED: Erroneous Gain Accepted ERRONEOUS_GAIN_REJECTED: Erroneous Gain Rejected ERRONEOUS_GAIN_CANCELLED: Erroneous Gain Cancelled LOSS_REQUESTED_ERRONEOUS_GAIN: Loss Requested (Erroneous Gain) LOSS_PENDING_ERRONEOUS_GAIN: Loss Pending (Erroneous Gain) LOST_ERRONEOUS_GAIN: Lost (Erroneous Gain) ERRONEOUS_LOSS_PROPOSED: Erroneous Loss Proposed ERRONEOUS_LOSS_ACCEPTED: Erroneous Loss Accepted ERRONEOUS_LOSS_REJECTED: Erroneous Loss Rejected ERRONEOUS_LOSS_CANCELLED: Erroneous Loss Cancelled ET_REQUESTED: Erroneous Transfer Requested ET_ACCEPTED: Erroneous Transfer Accepted ET_LOSS_PENDING: Erroneous Transfer Loss Pending ET_COMPLETED: Erroneous Transfer Completed ET_CANCELLED: Erroneous Transfer Cancelled LOSS_REQUESTED: Loss Requested LOSS_PENDING: Loss Pending LOST: Lost DISCONNECTED: Disconnected ERRONEOUS_LOSS: Erroneous Loss LOSS_OBJECTION_REQUESTED: Loss Objection Requested LOSS_OBJECTION_REMOVAL_REQUESTED: Loss Objection Removal Requested LOSS_OBJECTION_ACCEPTED: Loss Objection Accepted CLOSING_READ_DISPUTE: Closing Read Disputed DE-ENERGISED: De-Energised UNDERGOING_REGISTRATION: Undergoing Registration REGISTRATION_AT_RISK: Registration At Risk GAIN_PENDING_DAP: Gain Pending (Debt Assignment Protocol) LOSS_PENDING_DAP: Loss Pending (Debt Assignment Protocol) required: - mpxn - status GbrMeterPointStatusError: type: object properties: error: type: string title: Description of the error. description:

The details of the error.

required: - error GbrRegistrationFlowError: type: object properties: error_detail: type: string title: Description of the registration flow error description:

The description of the error when attempting to register the flow error.

external_account_number: type: string title: The account number on the import suppliers system. description:

The account number in the source system.

import_supplier_code: type: string title: The code of an existing ImportSupplier in the database. description:

The import supplier code that the meter point registration is associated with.

required: - error_detail - external_account_number - import_supplier_code HistoricalReading: type: object properties: billed: type: boolean description:

Whether the reading has been billed.

reading_date: type: string format: date description:

The date of the reading.

reading_type: enum: - CUSTOMER - ESTIMATE - ROUTINE - SMART - REGULAR type: string x-spec-enum-id: 1ae88a4096677e8e description:

The type of reading. See choices for more details.

x-enum-descriptions: CUSTOMER: Customer ESTIMATE: Estimate ROUTINE: Routine SMART: Smart REGULAR: Regular reading_value: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The reading value as a decimal.

register_id: type: string description:

The register identifier as provided in the Meter Technical Details (MTDs), including leading zeros.

maxLength: 32 validation_status: enum: - VALIDATED - UNVALIDATED - FAILED type: string x-spec-enum-id: 3ab1e518b1b0a9db default: VALIDATED description:

Whether the reading has been validated or not. See choices for more details.

x-enum-descriptions: VALIDATED: Validated UNVALIDATED: Unvalidated FAILED: Failed required: - billed - reading_date - reading_type - reading_value HistoricalStatements: type: object properties: external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

import_supplier: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description:

The import supplier code that the account was imported on to. This, along with the external_account_number, will be used to find the account in Kraken.

x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA statements: type: array items: $ref: '#/components/schemas/Statement' description:

List of historical statements for the account.

required: - external_account_number - import_supplier - statements x-validators: - name: Validate that account data is staged and account created description: Validate that an account exists for the external_account_number and import_supplier 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 the account doesn't have historical statements description: Validate the the historical statements that are being imported do not already exist on the account. To check this the statement_id's in the payload are checked against any historical statement IDs already associated with the account. possible_errors: - account_not_found - historical_statement_already_exists ImportEvent: type: object properties: data: type: object nullable: true description:

Additional data associated with the import event, such as error codes and details.

event: type: string description:

The type of import event.

occurred_at: type: string format: date-time description:

The date and time when the import event was recorded.

required: - event - occurred_at ImportProcess: type: object properties: account_created_at: type: string format: date-time description:

The date and time that the account was created at.

external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

maxLength: 128 kraken_account_number: type: string description: Account number maxLength: 128 required: - external_account_number ImportStatusResponse: type: object properties: created_at: type: string format: date-time description:

The date and time when the import process was created.

kraken_identifier: type: string nullable: true description:

The unique identifier assigned to this import within Kraken.

latest_error: allOf: - $ref: '#/components/schemas/LatestError' nullable: true description:

The most recent error that occurred during the import process, if any.

latest_event: allOf: - $ref: '#/components/schemas/ImportEvent' description:

The most recent import event associated with the import process, if any.

modified_at: type: string format: date-time description:

The date and time when the import process was last modified.

status: type: string description:

The current status of the import process.

required: - created_at - latest_event - modified_at - status LatestError: type: object properties: code: type: string nullable: true description:

The error code identifying the type of error that occurred.

detail: type: string nullable: true description:

A detailed description of the error that occurred.

domain: type: string nullable: true description:

The domain or context in which the error occurred.

Ledger: type: object properties: ledger_code: type: string description:

The code of the relevant Kraken ledger type.

x-validators: - name: Validate ledger code description: Validates that the ledger code provided in the payload matches an available ledger type in Kraken. possible_errors: - ledger_code_does_not_exist ledger_identifier: type: string description:

A unique string value that helps to refer a ledger object across the payload.

required: - ledger_code LegacyPaymentInstruction: type: object properties: external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

import_supplier: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description:

The import supplier code that the account was imported on to. This, along with the external_account_number, will be used to find the account in Kraken.

x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA instruction_reference: type: string description:

The reference of the mandate as known by the vendor.

deprecated: true x-use-instead: reference maxLength: 128 ledger_code: type: string description:

The code of the relevant Kraken ledger type for the payment instruction. This code must exist in Kraken.

x-validators: - name: Validate ledger code description: Validates that the ledger code provided in the payload matches an available ledger type in Kraken. possible_errors: - ledger_code_does_not_exist reference: type: string description:

The reference of the mandate as known by the vendor.

maxLength: 512 type: enum: - BPAY - CARD - CUSTOM - DIRECT_DEBIT - GMO_REFUND - PAYMENT_SLIP type: string x-spec-enum-id: 601d0b035869d4dd description:

The payment type of the payment instruction.

x-enum-descriptions: BPAY: BPAY CARD: Card CUSTOM: Custom DIRECT_DEBIT: Direct Debit GMO_REFUND: GMO Refund PAYMENT_SLIP: Payment slip use_for_scheduled_payments: type: boolean nullable: true description:

Whether this payment instruction should be used for scheduled payments on a given ledger. If true, this instruction will be set as the payment method for the account's payment schedule.

valid_from: type: string format: date nullable: true description:

The date from which the payment instruction is valid.

vendor: enum: - STRIPE - BOTTOMLINE_GLOBAL_PAYMENTS_HUB - BOTTOMLINE_PTX - BOTTOMLINE_PTX_BATCHED type: string x-spec-enum-id: cd9cdc0ef05270d9 description:

The vendor for the payment instruction.

x-enum-descriptions: STRIPE: Stripe BOTTOMLINE_GLOBAL_PAYMENTS_HUB: Bottomline Global Payments Hub BOTTOMLINE_PTX: Bottomline PTX BOTTOMLINE_PTX_BATCHED: Bottomline PTX Batched required: - external_account_number - import_supplier - type - vendor x-validators: - name: Validate that account data is staged and account created description: Validate that an account exists for the external_account_number and import_supplier 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 ⁨instruction_reference⁩ or ⁨reference⁩ are provided description: Validate that exactly one of ⁨instruction_reference⁩ or ⁨reference⁩ is provided. possible_errors: - mutually_exclusive_field_required LineItem: type: object properties: end_date: type: string format: date description:

The end date for the billing period, inclusive.

external_rate_identifier: type: string description:

The external identifier of the rate used to generate the charge for this line item. Only required if Kraken is configured to use placeholder rates when creating supply charge line items.

net_amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

Charge amount for the line item. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

number_of_units: type: string format: decimal pattern: ^-?\d{0,12}(?:\.\d{0,4})?$ description:

E.g. cubic meters consumed for the period, days on supply for fixed charges or RV proportion for period for unmetered RV charges.

params: type: object default: {} description:

Additional parameters for the line item.

meter_legacy_id must be provided where multiple meters are active between the line item's start_date and end_date.

price_per_unit: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,7})?$ description:

Price per unit for the line item. If this is not provided, then the price per unit from the relevant product rate will be used instead. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

rate_band: type: string description:

Rate of the product this charge is for. Must match an existing rate of a product product_code. Rate must be active from start_date to end_date.

rate_specification_code: type: string description:

Rate specification code of the product this charge is for. This code must refer to an existing rate specification within the product.

start_date: type: string format: date description:

The start date for the billing period, inclusive.

time_series_specification_code: type: string description:

Time series specification code.

units: type: array items: type: string format: decimal pattern: ^-?\d{0,12}(?:\.\d{0,4})?$ description:

For metered accounts only. List of decimal numbers representing the meter readings for the billing period.

x-validators: - name: Validate line item units description: Validates that the line item units provided in the payload is a list of two items only. possible_errors: - line_item_units_must_be_two_values required: - end_date - net_amount - number_of_units - start_date x-validators: - name: Validate ⁨end_date⁩ not before ⁨start_date⁩ description: Validates that ⁨end_date⁩, if given, is on or later than ⁨start_date⁩. possible_errors: - start_date_later_than_end_date - name: Validate the line item net amount description: Validate that the line item net amount is equal to the price per unit multiplied by the number of units. possible_errors: - incorrect_line_item_net_amount - name: Ensure that the band or rate specification or time series specification for a line item is specified. description: Validate line items include exactly one of rate_band, rate_specification_code, or time_series_specification_code. possible_errors: - conflicting_rate_band_specification Metadata: type: object properties: key: type: string description:

The key on which the metadata will be stored on.

maxLength: 1024 value: description:

A json object containing any arbitrary piece of data to store in relation to the account.

required: - key - value MeterPoint: oneOf: - $ref: '#/components/schemas/ElectricityMeterPoint' - $ref: '#/components/schemas/GasMeterPoint' discriminator: propertyName: supply_type mapping: ELECTRICITY: '#/components/schemas/ElectricityMeterPoint' GAS: '#/components/schemas/GasMeterPoint' NewPaymentInstructionReference: type: object properties: instruction_identifier: type: string description:

Identifier for the payment instruction from the payment_instructions. This will be used to refer to a payment instruction in the same payload for the payment preference.

maxLength: 512 required: - instruction_identifier NonFieldErrors: type: object properties: non_field_errors: type: array items: type: string description: Description of the error. description: Validation error messages. required: - non_field_errors Note: type: object properties: body: type: string description:

The body of the note. Should include who/what created the note if this is required.

created_at: type: string format: date-time description:

The date and time the note was created.

document_paths: type: array items: $ref: '#/components/schemas/NoteDocument' description:

A list of relative paths in S3 for documents to be attached to the note.

More details on document path parameters can be found here.

external_id: type: string description:

Unique identifier for this note to avoid duplicate entries.

is_archived: type: boolean description:

If set to true, this will archive the note in the Kraken account support site page.

is_pinned: type: boolean description:

If set to true, this will pin the note to the top of the Kraken account support site page.

unpin_at: type: string format: date-time description:

When the pinned note should be unpinned. Has to be later than created_at if this is provided. Has no effect if the note is not pinned.

x-validators: - name: Validate note body or document paths provided description: Validate that at least a note body or document paths are provided. possible_errors: - note_body_or_document_path_not_found - name: Validate note created at is equal to or before unpin at description: Validate that the note's created at date is equal to or before the unpin at date if both are provided. possible_errors: - note_unpin_at_earlier_than_creation_date NoteDocument: type: object properties: document_path: type: string description:

The S3 relative path to the document to be attached to the note.

x-validators: - name: Validate path exists in file store description: Validate that the given path corresponds to a file that has previously been uploaded to the migration file store. Note that this validation is disabled by default and can be enabled using the relevant feature flag. possible_errors: - path_does_not_exist_in_file_store required: - document_path PartnerOrganisation: type: object properties: organisation_number: type: string description:

Identifier of the partner organisation.

maxLength: 128 x-validators: - name: Validate organisation_number description: Validate that the given organisation_number has a corresponding organisation registered in the database. possible_errors: - partner_organisation_does_not_exist role: x-spec-enum-id: 4f53cda18c2baa0c description:

The type of role the partner organisation plays.

x-comment: Choices for this field are dynamic, once appropriate values have been configured they will be rendered here. source_reference_s3_key: type: string description:

The s3 key of the partner file attachment that governs this organisation relationship.

valid_from: type: string format: date-time description:

The beginning of the validity period of this organisation relationship.

valid_to: type: string format: date-time description:

The end of the validity period of this organisation relationship.

required: - organisation_number - role - valid_from - valid_to x-validators: - name: Validate ⁨valid_to⁩ not before ⁨valid_from⁩ description: Validates that ⁨valid_to⁩, if given, is on or later than ⁨valid_from⁩. possible_errors: - start_date_later_than_end_date PaymentAdequacyChange: type: object properties: applied_at: type: string format: date-time nullable: true description:

The datetime the payment adequacy change was applied and the customer was notified. This should be None if the payment adequacy change was not applied.

x-validators: - name: Validate payment adequacy change applied in past description: Validates that the payment adequacy change applied at date, if provided, is not in the future. possible_errors: - payment_adequacy_invalid_dates average_monthly_charge: type: integer minimum: 0 description:

The average monthly charge for the account, if we sum all yearly charges and divide them by 12.

average_monthly_elec_charge: type: integer minimum: 0 description:

The average monthly electricity charge for the account, if we sum all yearly charges and divide them by 12.

average_monthly_gas_charge: type: integer minimum: 0 description:

The average monthly gas charge for the account, if we sum all yearly charges and divide them by 12.

balance_adjustment: type: integer description:

The adjustment on top of the average monthly charge, to be used as the new direct debit payment. This can be 0 if the difference between current and target balance is small enough to not act on.

created_at: type: string format: date-time description:

The datetime the payment adequacy change was created.

x-validators: - name: Validate payment adequacy change created in past description: Validates that the payment adequacy change created at date provided is not in the future. possible_errors: - payment_adequacy_invalid_dates current_balance: type: integer description:

The account balance at the date of the payment adequacy run.

existing_direct_debit_payment: type: integer minimum: 0 description:

The existing Direct Debit payment amount at the time of review.

ledger: allOf: - $ref: '#/components/schemas/Ledger' description:

The ledger for the payment adequacy change. The ledger must already exist in Kraken.

new_direct_debit: type: integer minimum: 0 description:

The recommended Direct Debit payment amount.

should_not_be_applied_reason: type: string nullable: true description:

The reason why the payment adequacy change was not applied. This should be null if the payment adequacy change was applied.

maxLength: 512 target_balance: type: integer description:

The target balance for the account after 12 months.

required: - average_monthly_charge - average_monthly_elec_charge - average_monthly_gas_charge - balance_adjustment - created_at - current_balance - existing_direct_debit_payment - new_direct_debit - target_balance x-validators: - name: Validate payment adequacy change created before applied description: Validates that the payment adequacy change created at date is before the applied at date, if provided. possible_errors: - payment_adequacy_invalid_dates - name: Validate payment adequacy change applied or reason provided description: Validates that either a payment adequacy change applied at date or a reason to not apply the payment adequacy change is provided, but not both. possible_errors: - payment_adequacy_missing_reason - payment_adequacy_should_not_have_been_applied - name: Validate average monthly charge equal to sum description: Validates that the average monthly charge is equal to the sum of the electricity and gas monthly charges provided. possible_errors: - payment_adequacy_monthly_charges_unequal - name: Validate non zero balance adjustment equal to monthly difference description: Validates that the non zero balance adjustment provided in the payload is equal to the monthly difference between the target balance and current balance. possible_errors: - payment_adequacy_balance_adjustment_mismatch - name: Validate direct debit between existing and max payment description: Validates that the direct debit amount provided is between the existing direct debit amount provided and the maximum payment amount. Here, the maximum payment amount is average monthly charge plus balance adjustment provided. possible_errors: - payment_adequacy_new_direct_debit_amount_mismatch PaymentInstruction: type: object properties: customer_reference: type: string description:

The customer reference of the payment instruction.

Although not required for payment instructions to take payments, if provided it keeps Kraken's data in sync with the customer's account in the payment vendor's systems.

maxLength: 512 instruction_identifier: type: string description:

Unique identifier for the payment instruction. Used for cross referencing the payment instruction within other parts of the payload.

ledger_code: type: string description:

The code of the relevant Kraken ledger type for the payment instruction. This code must exist in Kraken.

x-validators: - name: Validate ledger code description: Validates that the ledger code provided in the payload matches an available ledger type in Kraken. possible_errors: - ledger_code_does_not_exist reference: type: string description:

The reference of the mandate as known by the vendor.

maxLength: 512 type: enum: - BPAY - CARD - CUSTOM - DIRECT_DEBIT - GMO_REFUND - PAYMENT_SLIP type: string x-spec-enum-id: 601d0b035869d4dd description:

The payment type of the payment instruction.

x-enum-descriptions: BPAY: BPAY CARD: Card CUSTOM: Custom DIRECT_DEBIT: Direct Debit GMO_REFUND: GMO Refund PAYMENT_SLIP: Payment slip use_for_scheduled_payments: type: boolean description:

Whether this payment instruction should be used for scheduled payments on a given ledger. If true, this instruction will be set as the payment method for the account's payment schedule.

valid_from: type: string format: date nullable: true description:

The date from which the payment instruction is valid.

vendor: enum: - STRIPE - BOTTOMLINE_GLOBAL_PAYMENTS_HUB - BOTTOMLINE_PTX - BOTTOMLINE_PTX_BATCHED type: string x-spec-enum-id: cd9cdc0ef05270d9 description:

The vendor for the payment instruction.

x-enum-descriptions: STRIPE: Stripe BOTTOMLINE_GLOBAL_PAYMENTS_HUB: Bottomline Global Payments Hub BOTTOMLINE_PTX: Bottomline PTX BOTTOMLINE_PTX_BATCHED: Bottomline PTX Batched required: - reference - type - vendor x-validators: - name: null description: null possible_errors: - incomplete_payments_not_enabled PaymentPlan: type: object properties: accepted_at: type: string format: date-time description:

The datetime when the payment plan was accepted.

payments: type: array items: $ref: '#/components/schemas/PaymentPlanPayment' description:

The payments that form the payment plan.

x-validators: - name: Validates that the payment plan payment components are unique description: Validates that the combinations of payment_date and component_type are unique. possible_errors: - duplicate_payment_component_combinations schedule_means: enum: - DD - CARD - MANUAL - PAYMENT_SLIP type: string x-spec-enum-id: 07a5f0f09deee145 description:

The payment type of the schedule used to generate the planned payments. This corresponds to the 3 different types of payment schedules Kraken supports.

x-enum-descriptions: DD: Direct Debit CARD: Card MANUAL: Manual Payment PAYMENT_SLIP: Payment Slip strategy_name: type: string description:

The name of the strategy the plan uses. Please discuss with the tech team to determine the strategy to use.

x-validators: - name: Validate that the strategy exists description: Validate that the payment plan strategy exists. possible_errors: - payment_plan_strategy_does_not_exist required: - accepted_at - payments - schedule_means - strategy_name PaymentPlanPayment: type: object properties: amount_components: type: array items: $ref: '#/components/schemas/PaymentPlanPaymentAmountComponent' description:

The components of the payment that form the total amount. Can be an empty array if the payment is not broken into components. The amounts must sum up to the total_amount.

payment_date: type: string format: date description:

The date the payment should be made.

total_amount: type: integer minimum: 0 description:

The total amount of the payment.

required: - amount_components - payment_date - total_amount x-validators: - name: Validate that component amounts sum up to the total description: Validate that the component amounts of a payment plan payment sum up to the total amount of the payment. possible_errors: - payment_plan_payment_components_do_not_sum_to_total PaymentPlanPaymentAmountComponent: type: object properties: amount: type: integer minimum: 0 description:

The amount of the component.

component_type: type: string description:

The type of the component. The options will depend on the strategy so please discuss with the tech team to determine the correct values.

required: - amount - component_type PaymentPreference: oneOf: - $ref: '#/components/schemas/PaymentPreferencesWithExistingInstructionReferences' - $ref: '#/components/schemas/PaymentPreferencesWithNewInstructionReferences' - $ref: '#/components/schemas/BasePaymentPreference' discriminator: propertyName: type mapping: ACTIVE_EXISTING: '#/components/schemas/PaymentPreferencesWithExistingInstructionReferences' ACTIVE_NEW: '#/components/schemas/PaymentPreferencesWithNewInstructionReferences' PASSIVE: '#/components/schemas/BasePaymentPreference' PaymentPreferencesWithExistingInstructionReferences: type: object properties: type: enum: - ACTIVE_EXISTING - ACTIVE_NEW - PASSIVE type: string x-spec-enum-id: 4cc9502ba974f87d description:

Indicates whether this payment preference refers to an existing payment instruction already present in Kraken, or to a new one being created in the import.

x-enum-descriptions: ACTIVE_EXISTING: Existing Payment Instruction ACTIVE_NEW: New Payment Instruction PASSIVE: No Payment Instruction Preference instruction_reference_params: allOf: - $ref: '#/components/schemas/ExistingPaymentInstructionReference' description:

Parameters identifying the payment instruction to use for automated payments on this ledger.

ledger_identifier: type: string description:

Identifier for the ledger from the ledgers. This will be used to link the payment instruction to a specific ledger being imported using payment preference.

required: - instruction_reference_params - ledger_identifier - type PaymentPreferencesWithNewInstructionReferences: type: object properties: type: enum: - ACTIVE_EXISTING - ACTIVE_NEW - PASSIVE type: string x-spec-enum-id: 4cc9502ba974f87d description:

Indicates whether this payment preference refers to an existing payment instruction already present in Kraken, or to a new one being created in the import.

x-enum-descriptions: ACTIVE_EXISTING: Existing Payment Instruction ACTIVE_NEW: New Payment Instruction PASSIVE: No Payment Instruction Preference instruction_reference_params: allOf: - $ref: '#/components/schemas/NewPaymentInstructionReference' description:

Parameters identifying the payment instruction to use for automated payments on this ledger.

ledger_identifier: type: string description:

Identifier for the ledger from the ledgers. This will be used to link the payment instruction to a specific ledger being imported using payment preference.

required: - instruction_reference_params - ledger_identifier - type PaymentPromise: type: object properties: amount: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The amount of the promised payment.

ledger_code: type: string description:

The Kraken ledger code that this payment promise should be created on.

payment_date: type: string format: date description:

The payment date of the promised payment.

required: - amount - payment_date PaymentSchedule: type: object properties: amount: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ default: '0.00' description:

The amount of the payment schedule.

balance_threshold: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The account balance threshold that triggers a payment for balance-triggered schedules.

day_of_month: type: integer nullable: true description:

The day of the month the payment is due.

x-validators: - name: Validate payment day for payment schedule description: Validate that the payment day for a payment schedule is between the configured minimum and maximum allowed payment days in Kraken. possible_errors: - invalid_payment_day_for_payment_schedule debt_repayment_element: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The contribution to the amount in addition to the regular fixed schedule payment amount.

debt_repayment_element = amount - fixed schedule amount.

debt_repayment_end_date: type: string format: date description:

The date on which the debt repayment will no longer be taken in addition to the regular payment.

delay_days: type: integer description:

The delay days to configure for the schedule. This configures how many days are delayed when a payment is trigged from a BILL triggered schedule and is therefore only compatible if the trigger = BILL. This is required only if delay_strategy is set.

delay_strategy: enum: - FIXED - WORKING_DAYS type: string x-spec-enum-id: 65a4ec07dce09466 description:

The delay days strategy for the schedule. This configures how many days are delayed when a payment is trigged from a BILL triggered schedule and is therefore only compatible if the trigger = BILL

x-enum-descriptions: FIXED: Fixed WORKING_DAYS: Working Day end_date: type: string format: date nullable: true description:

The end date for the payment schedule.

exempt_from_payment_adequacy: type: boolean default: false description:

Whether the payment schedule is exempt from payment adequacy or not.

frequency: enum: - MONTHLY - QUARTERLY - WEEKLY - FORTNIGHTLY - FOUR_WEEKLY - ANNUALLY - SIX_MONTHLY type: string x-spec-enum-id: 356d8ee33fff0f54 description:

The frequency of the payment schedule (e.g., WEEKLY, MONTHLY).

x-enum-descriptions: MONTHLY: Monthly QUARTERLY: Quarterly WEEKLY: Weekly FORTNIGHTLY: Fortnightly FOUR_WEEKLY: Four-weekly ANNUALLY: Annually SIX_MONTHLY: Six-monthly instalments: type: array items: $ref: '#/components/schemas/Payments' description:

The instalments of the payment schedule.

x-validators: - name: Validate that each child has a unique combination of values for the ⁨payment_date, payment_type⁩ fields description: Validate that each child has a unique combination of values for the ⁨payment_date, payment_type⁩ fields. possible_errors: - children_with_duplicate_values is_debt_repayment_plan: type: boolean default: false description:

Whether the payment schedule is a debt repayment plan or not.

ledger_code: type: string description:

The code of the relevant Kraken ledger type for the payment schedule.

x-validators: - name: Validate ledger code description: Validates that the ledger code provided in the payload matches an available ledger type in Kraken. possible_errors: - ledger_code_does_not_exist means: enum: - DD - CARD - MANUAL - PAYMENT_SLIP type: string x-spec-enum-id: 07a5f0f09deee145 description:

The means of the payment schedule.

x-enum-descriptions: DD: Direct Debit CARD: Card MANUAL: Manual Payment PAYMENT_SLIP: Payment Slip paid_by: enum: - CUSTOMER - FUEL_DIRECT type: string x-spec-enum-id: 30fbefccd8f9d980 default: CUSTOMER description:

Who is paying the payments on the schedule.

x-enum-descriptions: CUSTOMER: CUSTOMER FUEL_DIRECT: FUEL_DIRECT start_date: type: string format: date description:

The start date for the payment schedule.

trigger: enum: - PLAN - REGULAR - REGULAR_PLAN - BALANCE - BILL type: string x-spec-enum-id: 70fceded34e99681 description:

The trigger for the payment schedule. See choices for more details.

If not provided we create a fixed schedule, i.e. trigger = REGULAR. A BILL triggered schedule creates a ledger balance clearing payment when a statement or invoice is issued.

x-enum-descriptions: PLAN: Planned collection REGULAR: Regular collection REGULAR_PLAN: Regular planned collection BALANCE: Balance below BILL: Bill issued required: - means - start_date x-validators: - name: Validate ⁨end_date⁩ not before ⁨start_date⁩ description: Validates that ⁨end_date⁩, if given, is on or later than ⁨start_date⁩. 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 ⁨0⁩ - ⁨upper_bound⁩ description: Validate that the payment amount for any fixed payment schedule is within the major currency unit range of ⁨lower_limit⁩ - ⁨UNLIMITED⁩. 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 Payments: type: object properties: amount: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description:

The payable amount of an instalment.

payment_date: type: string format: date description:

The payable date of an instalment.

payment_type: enum: - '' type: string x-spec-enum-id: 4f53cda18c2baa0c description:

The type of an instalment.

x-enum-descriptions: '': '' required: - amount - payment_date PortfolioReference: type: object properties: namespace: enum: - external-portfolio-reference-id - portfolio-label type: string x-spec-enum-id: 9c7783add2be9a67 description:

The namespace refers to the particular context the reference exists in. This must be one of the following options below if a portfolio reference is being provided.

x-enum-descriptions: external-portfolio-reference-id: external-portfolio-reference-id portfolio-label: portfolio-label value: type: string description:

The unique identifier for the portfolio.

maxLength: 100 required: - namespace - value PortfolioSettings: type: object properties: collective_billing: type: boolean default: false description:

Set all accounts on the portfolio to be billed collectively. This value can only be provided if the account is the portfolio lead account.

collective_payments: type: boolean default: false description:

Set all accounts on the portfolio to pay collectively. This value can only be provided if the account is the portfolio lead account.

delegate_billing_schedule_to_children: type: boolean default: false description:

When using collective billing, use the child account's billing options to determine when we charge and prepare billing documents (as opposed to using the lead account's options). This value can only be provided if the account is the portfolio lead account.

send_collective_bill_constituent_messages: type: boolean default: false description:

When using collective billing, send collective bill constituent messages to each member of the collective bill. This value can only be provided if the account is the portfolio lead account.

ProcessAccountImportProcess: type: object properties: dry_run: type: boolean default: false description: Whether to run the process in dry-run mode. Running in dry-run mode will not create any accounts. external_account_number: type: string description: The account number on the import suppliers system. import_supplier_code: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description: The code of an existing ImportSupplier in the database. x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA operations_team_name: type: string description: The operations team the account portfolio should be assigned to. x-validators: - name: Validate that an operations team exists description: Validate that an operations team exists with the name provided. possible_errors: - operations_team_name_does_not_exist required: - external_account_number - import_supplier_code x-validators: - name: Validate an AccountImportProcess exists description: Validate that for the given external_account_number and import_supplier_code an AccountImportProcess exists. possible_errors: - import_process_does_not_exist - 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 ProcessAccountImportProcessCreation: type: object properties: account_number: type: string description: Account number deprecated: true maxLength: 128 external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

maxLength: 128 kraken_account_number: type: string description: Account number maxLength: 128 required: - external_account_number ProductCharacteristic: oneOf: - $ref: '#/components/schemas/SalesChannelCharacteristic' - $ref: '#/components/schemas/Gbr-electricity.payment-methodCharacteristic' - $ref: '#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic' - $ref: '#/components/schemas/Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic' - $ref: '#/components/schemas/Gbr-gas.payment-methodCharacteristic' discriminator: propertyName: code mapping: sales_channel: '#/components/schemas/SalesChannelCharacteristic' gbr-electricity.payment-method: '#/components/schemas/Gbr-electricity.payment-methodCharacteristic' gbr-electricity.meter-rate-profile: '#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic' gbr-gas.meter-point-grid-supply-point-equivalent: '#/components/schemas/Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic' gbr-gas.payment-method: '#/components/schemas/Gbr-gas.payment-methodCharacteristic' x-validators: - name: Validate that characteristics.code and characteristics.value are valid description: Ensure that the characteristic code exists and the characteristic value is valid for the given code. possible_errors: - characteristic_code_not_found - invalid_characteristic_value PropertyAdministrator: type: object properties: address1: type: string description:

Property administrator's address line 1.

deprecated: true maxLength: 512 address2: type: string description:

Property administrator's address line 2.

deprecated: true maxLength: 512 address3: type: string description:

Property administrator's address line 3.

deprecated: true maxLength: 512 address4: type: string description:

Property administrator's address line 4.

deprecated: true maxLength: 512 address5: type: string description:

Property administrator's address line 5.

deprecated: true maxLength: 512 billing_name: type: string default: '' description:

The billing name to be used on the property administrators account. If provided, it will be used for producing statements. If not, the customer names on the account will be used.

maxLength: 255 date_of_birth: type: string format: date nullable: true description:

The property administrator's date of birth.

deceased: enum: - Reported - Confirmed - '' type: string x-spec-enum-id: f90e7d899a971044 default: '' description:

Whether the property administrator is deceased or not. Defaults to an empty string if not provided.

x-enum-descriptions: Reported: Reported Confirmed: Confirmed '': '' effective_from: type: string format: date-time nullable: true description:

The date at which this person starts being an administrator of the property (inclusive).

effective_to: type: string format: date-time nullable: true description:

The date at which this person stops being an administrator of the property (exclusive).

email: type: string format: email nullable: true description:

The property administrator's email address. This is the email address they will use to log into their online portal. Defaults to an empty string if not provided.

maxLength: 254 family_name: type: string default: '' description:

The property administrator's family name.

maxLength: 255 given_name: type: string nullable: true default: '' description:

The property administrator's given name.

maxLength: 255 landline: type: string nullable: true default: '' description:

The property administrator's landline phone number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number mobile: type: string nullable: true default: '' description:

The property administrator's personal mobile number.

maxLength: 32 x-validators: - name: Validate phone number description: Validates that a phone number conforms to the norms of the region from which the migration is taking place. possible_errors: - invalid_phone_number postcode: type: string description:

Property administrator's postcode.

deprecated: true maxLength: 10 role: enum: - LANDLORD - PROPERTY_DEVELOPER type: string x-spec-enum-id: 6092c30314e34a56 default: LANDLORD description:

The portfolio role to be assigned to the property administrator on account creation. Will default to LANDLORD if no value is provided.

x-enum-descriptions: LANDLORD: Landlord PROPERTY_DEVELOPER: Property Developer salutation: type: string nullable: true default: '' description:

The property administrator's preferred salutation.

maxLength: 128 title: type: string nullable: true default: '' description:

The property administrator's preferred title.

maxLength: 20 x-validators: - name: Validate ⁨effective_to⁩ not before ⁨effective_from⁩ description: Validates that ⁨effective_to⁩, if given, is on or later than ⁨effective_from⁩. possible_errors: - start_date_later_than_end_date RateOverride: type: object properties: rate_band: type: string description:

The band of the product rate to override.

maxLength: 255 unit_price: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The unit price to override the rate with.

required: - rate_band - unit_price Reading: type: object properties: reading_date: type: string format: date description:

The date of the reading.

reading_type: enum: - CUSTOMER - ESTIMATE - ROUTINE - SMART - REGULAR type: string x-spec-enum-id: 1ae88a4096677e8e description:

The type of reading. See choices for more details.

x-enum-descriptions: CUSTOMER: Customer ESTIMATE: Estimate ROUTINE: Routine SMART: Smart REGULAR: Regular reading_value: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The reading value as a decimal.

register_id: type: string description:

The register identifier as provided in the Meter Technical Details (MTDs), including leading zeros.

maxLength: 32 required: - reading_date - reading_type - reading_value SalesChannelCharacteristic: type: object properties: code: enum: - sales_channel type: string x-spec-enum-id: 03e433a571effc5f description:

The code for the product's characteristic.

x-enum-descriptions: sales_channel: sales_channel value: enum: - PARTNERSHIPS - NEW_TENANT - MOVE_IN - DIRECT - DEBT_COLLECTION_AGENCY - DIGI_TELESALES - LANDLORD - ACQUISITION - TELESALES - FIELD_SALES - HIGH_REFERRER - WORKS_WITH_OCTOPUS - PARENT_POWER - WORKPLACE_POP_UP - GIFT_OF_KIT - PEOPLE_POWER - AGGREGATOR - PRICE_COMPARISON - SUPPLIER_OF_LAST_RESORT - EVENTS - BROKER type: string x-spec-enum-id: 2c5347e84652fd95 description:

The value for the product's characteristic.

x-enum-descriptions: PARTNERSHIPS: PARTNERSHIPS NEW_TENANT: NEW_TENANT MOVE_IN: MOVE_IN DIRECT: DIRECT DEBT_COLLECTION_AGENCY: DEBT_COLLECTION_AGENCY DIGI_TELESALES: DIGI_TELESALES LANDLORD: LANDLORD ACQUISITION: ACQUISITION TELESALES: TELESALES FIELD_SALES: FIELD_SALES HIGH_REFERRER: HIGH_REFERRER WORKS_WITH_OCTOPUS: WORKS_WITH_OCTOPUS PARENT_POWER: PARENT_POWER WORKPLACE_POP_UP: WORKPLACE_POP_UP GIFT_OF_KIT: GIFT_OF_KIT PEOPLE_POWER: PEOPLE_POWER AGGREGATOR: AGGREGATOR PRICE_COMPARISON: PRICE_COMPARISON SUPPLIER_OF_LAST_RESORT: SUPPLIER_OF_LAST_RESORT EVENTS: EVENTS BROKER: BROKER required: - code - value ScheduleAccountCreation: type: object properties: payload: allOf: - $ref: '#/components/schemas/EnergyAccount' description:

The payload to be used during creation.

task_params: allOf: - $ref: '#/components/schemas/TaskParameters' description:

The parameters that control when and how Kraken will execute this task.

required: - payload - task_params StandardizedError: type: object properties: attr: type: string description:

The attribute that the error relates to, if applicable.

code: type: string description:

The code for the error.

detail: type: string description:

A description of the error.

required: - attr - code - detail StandardizedValidationErrorResponse: type: object properties: code: type: string description:

The code for the error.

detail: type: string description:

A description of the error.

errors: type: array items: $ref: '#/components/schemas/StandardizedError' description:

A list of field-specific errors.

required: - code - detail - errors Statement: type: object properties: bill_period_from_date: type: string format: date description:

The statement start date (inclusive).

bill_period_to_date: type: string format: date description:

The statement end date (inclusive).

gross_amount: type: integer nullable: true description:

The gross amount of the statement, in the lowest denomination for the currency.

issued_date: type: string format: date nullable: true description:

The date the statement was issued.

number: type: string description:

The external customer-facing statement number.

statement_id: type: string description:

The ID of the statement.

statement_path: type: string description:

The relative path in S3 of the statement PDF file.

x-validators: - name: Validate path exists in file store description: Validate that the given path corresponds to a file that has previously been uploaded to the migration file store. Note that this validation is disabled by default and can be enabled using the relevant feature flag. possible_errors: - path_does_not_exist_in_file_store required: - bill_period_from_date - bill_period_to_date - statement_id x-validators: - name: null description: null possible_errors: - missing_statement_path_or_pdf_context - received_statement_path_and_pdf_context TaskParameters: type: object properties: is_dry_run: type: boolean default: false description:

Whether a scheduled account creation task is part of a dry run.

schedule_window_end: type: string format: date-time nullable: true description:

The end of a window in which a scheduled account creation task can be executed.

x-validators: - name: Validate that schedule_window_end does not exceed 4 days in the future description: Validate that the schedule_window_end is not more than 4 days in the future. possible_errors: - schedule_window_end_too_far_in_future schedule_window_start: type: string format: date-time nullable: true description:

The start of a window in which a scheduled account creation task can be executed.

x-validators: - name: Validate that schedule_window_start is not in the past. description: Validate that the schedule_window_start is not in the past. possible_errors: - schedule_window_start_in_past x-validators: - name: Populate start and end date times, and ensures start is before end description: Populates schedule_window_start and schedule_window_end with default values if necessary. Also ensures that the schedule_window_start is before the schedule_window_end. possible_errors: - schedule_window_start__after_end TaxItem: type: object properties: amount: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,10})?$ description:

The amount of tax. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.

params: type: object default: {} description:

Additional parameters for the tax item.

rate: type: string format: decimal pattern: ^-?\d{0,15}(?:\.\d{0,5})?$ description:

The rate at which tax has been applied.

tax_type: type: string description:

The type of tax.

unit_type: enum: - PROPORTION - CURRENCY_PER_KWH type: string x-spec-enum-id: c3c821f5b0c08a37 description:

The tax unit type.

x-enum-descriptions: PROPORTION: Proportion CURRENCY_PER_KWH: Currency Per Kwh value_taxed: type: string format: decimal pattern: ^-?\d{0,15}(?:\.\d{0,5})?$ description:

The value that the tax is applied to.

required: - amount - rate - tax_type - unit_type - value_taxed TransactionAnnotatedWithStatus: type: object properties: added_transaction_id: type: integer description:

The transaction id.

status: enum: - TRANSACTION_ADDED_TO_ACCOUNT - TRANSACTION_ALREADY_EXISTS - TRANSACTION_IMPORT_ERROR type: string x-spec-enum-id: 5a92d022962e1cea description:

The status of the transaction.

x-enum-descriptions: TRANSACTION_ADDED_TO_ACCOUNT: Transaction added to account TRANSACTION_ALREADY_EXISTS: Transaction already exists TRANSACTION_IMPORT_ERROR: Transaction import error transaction_data: allOf: - $ref: '#/components/schemas/TransactionData' description:

The data associated with the transaction that caused this error.

required: - status - transaction_data TransactionData: oneOf: - $ref: '#/components/schemas/EnergyCredit' - $ref: '#/components/schemas/EnergyCharge' - $ref: '#/components/schemas/EnergyPayment' - $ref: '#/components/schemas/EnergyRepayment' - $ref: '#/components/schemas/EnergySupplyCharge' discriminator: propertyName: type mapping: CREDIT: '#/components/schemas/EnergyCredit' CHARGE: '#/components/schemas/EnergyCharge' PAYMENT: '#/components/schemas/EnergyPayment' REPAYMENT: '#/components/schemas/EnergyRepayment' SUPPLY_CHARGE: '#/components/schemas/EnergySupplyCharge' Transactions: type: object properties: account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

deprecated: true x-use-instead: external_account_number dry_run: type: boolean default: false description:

Whether to run the transactions creation process in dry-run mode. Running in dry-run mode will not create any transactions.

external_account_number: type: string description:

The account number in the source system. This, along with the import_supplier, will be used to find the account in Kraken.

import_supplier: enum: - EDF_SHELL_ACCOUNT - EDF _DEENERGISED - EDF_SME_PAYG - EDF_PAYG - EDF_TERMED - EDF_FIT - EDF_AUTO_TOPUP - EDF_DEENERGISED - EDF_NEW_CONNECTIONS - EDFSME - EDFSME_MULTISITE - EDF_SMEPAYG - OPUS - EDF - UTILITA type: string x-spec-enum-id: 1106bbca05c54188 description:

The import supplier code that the account was imported on to. This, along with the external_account_number, will be used to find the account in Kraken.

x-enum-descriptions: EDF_SHELL_ACCOUNT: EDF Shell Account EDF _DEENERGISED: EDF Deenergised EDF_SME_PAYG: EDF_SME_PAYG EDF_PAYG: EDF PAYG EDF_TERMED: EDF_TERMED EDF_FIT: EDF FIT EDF_AUTO_TOPUP: EDF Auto Top Up EDF_DEENERGISED: EDF Deenergised EDF_NEW_CONNECTIONS: EDF New Connections EDFSME: EDF Production SME account import EDFSME_MULTISITE: EDF SME Multi-site EDF_SMEPAYG: EDF_SMEPAYG OPUS: Opus Energy EDF: EDF Production Import UTILITA: UTILITA transactions: type: array items: $ref: '#/components/schemas/EnergyTransaction' description:

A list of financial transactions to be imported onto the account.

required: - import_supplier x-validators: - name: Validate that account data is staged and account created description: Validate that an account exists for the external_account_number and import_supplier 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 unique transaction IDs description: Validate that all transaction IDs provided are unique. possible_errors: - duplicate_transaction_ids - missing_transaction_id TransactionsCreated: type: object properties: results: type: array items: $ref: '#/components/schemas/TransactionAnnotatedWithStatus' description:

The response when the transaction was created successfully.

required: - results ValidateAccount: type: object properties: payload: allOf: - $ref: '#/components/schemas/EnergyAccount' description:

The payload to be validated.

required: - payload securitySchemes: DRFKrakenTokenAuthentication: type: apiKey in: header name: Authorization description: JWT-based authentication DataImportViewerAPIKeyAuthentication: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token " tags: - name: account_import x-title: Account Import description: APIs for importing accounts. x-documentation-order: 5 - name: post_account_import x-title: Post Account Import description: APIs for importing additional data after an account has been imported. x-documentation-order: 6 - name: query x-title: Query APIs description: APIs for querying import status and retrieving data