Origin Energy · Schema

OriginAccount

EnergyAustraliaUtilitiesElectricityGasEnergy RetailConsumer Data RightSmart MeteringSolarDERDemand ResponseEnergy Markets

Properties

Name Type Description
account_billing_options object

Object containing account billing options for an account.

account_campaigns array

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

account_contracts array

List of account contracts associated with the account.

account_type string

The type of account to be created.

affiliate_subdomain stringnull

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 accoun

billing_address object

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 string

Account billing address line 1.

billing_address2 string

Account billing address line 2.

billing_address3 string

Account billing address line 3.

billing_address4 string

Account billing address line 4.

billing_address5 string

Account billing address line 5.

billing_attention_of string

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.

billing_customer_reference string

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

billing_delivery_point_identifier string

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

billing_email stringnull

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

billing_name string

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.

billing_postcode string

Account billing address postcode.

billing_sub_name string

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.

business object

Information about the business this account is related to.

business_type string

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

communication_preference string

The communication preference for this account. Defaults to ONLINE.

company_number string

The company number for a business account.

complaints array

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

consents array

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.

contribution_agreements array

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.

current_statement_transactions array

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

customers array

List of the account customers associated with the account.

date_of_sale string

Date the account was signed up.

debt object

Object containing information about debt on the account.

debts array

List of debts on the account.

deposit_agreements array

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

document_accessibility string

The document accessibility preferences for this account.

dunning_path object

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

events array

List of events to be associated with this account.

external_account_number string

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

hardship_agreements array

List of hardship agreements with the account. Accepts at most only one entry.

historical_statement_transactions array

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

import_supplier string

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

is_managed booleannull

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

is_portfolio_lead booleannull

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 i

language_preference string

The language preference for comms for this account.

last_billed_to_date string

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 tim

last_payment_review_date stringnull

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 wi

last_statement_balance string

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

last_statement_closing_date string

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 al

last_statement_issue_date string

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.

ledgers array

The list of ledger records linked to the account.

metadata array

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 simp

next_bill_due_date stringnull

Date to determine the current open account statement's to date.

notes array

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

operations_team_name string

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

partner_file_attachments array

The list of S3 paths for documents to be attached to the Partner Organisation. These files must already be uploaded to S3

partner_organisations array

List of partner organisations.

payment_adequacy_changes array

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 array

List of payment instructions to create for the account.

payment_plans array

List of payment plans agreed with the customer.

payment_preferences array

List of payment preferences to create for the account.

payment_promises array

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

payment_schedules array

List of payment schedules linked to the account.

payment_terms object

Overrides the default payment terms created by Kraken.

portfolio object

Information about the portfolio the account belongs to.

references array

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

remotely_communicating_meter_opt_out_reason object

Remotely communicating meter opt out reason.

sales_channel string

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

sales_subchannel string

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 <

statements array

List of historical statements for the account.

supply_addresses array

List of active supply addresses linked to the account.

transfer_balance string

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

unknown_occupier booleannull

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

View JSON Schema on GitHub

JSON Schema

origin-energy-origin-account-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/origin-energy/main/json-schema/origin-energy-origin-account-schema.json",
  "title": "OriginAccount",
  "x-generated": "2026-10-20",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/origin-energy-account-import-api-openapi.yml#/components/schemas/OriginAccount",
  "type": "object",
  "properties": {
    "account_billing_options": {
      "allOf": [
        {
          "$ref": "#/$defs/AccountBillingOptions"
        }
      ],
      "description": "<p>Object containing account billing options for an account.</p>"
    },
    "account_campaigns": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountCampaign"
      },
      "description": "<p>List of campaigns to be added to an account. Campaigns allow accounts to be grouped, essentially tagging them for easy identification.</p>",
      "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_contracts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountContract"
      },
      "description": "<p>List of account contracts associated with the account.</p>",
      "x-validators": [
        {
          "name": "Validate no duplicate contract identifiers",
          "description": "Validates that no duplicate contract identifiers have been provided in the payload.",
          "possible_errors": [
            "duplicate_contract_identifiers"
          ]
        }
      ]
    },
    "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": "<p>The type of account to be created.</p>",
      "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",
        "null"
      ],
      "description": "<p>Optional subdomain of the affiliate link to associate with the account.</p>\n<p>If provided, the matching <code>AffiliateLink</code> record will be looked up case-insensitively and set on the account and account application. The affiliate organisation's <code>sales_channel</code> and <code>sales_subchannel</code> will override any values supplied in the payload.</p>\n<p>If the subdomain does not match any known affiliate link, the import will continue and a warning will be logged.</p>"
    },
    "billing_address": {
      "allOf": [
        {
          "$ref": "#/$defs/AusBillingAddress"
        }
      ],
      "description": "<p>The billing address for the account. The payload can specify an address in this format or use the the <code>billing_address1</code> etc fields, but not both.</p>"
    },
    "billing_address1": {
      "type": "string",
      "description": "<p>Account billing address line 1.</p>",
      "maxLength": 512
    },
    "billing_address2": {
      "type": "string",
      "description": "<p>Account billing address line 2.</p>",
      "maxLength": 512
    },
    "billing_address3": {
      "type": "string",
      "description": "<p>Account billing address line 3.</p>",
      "maxLength": 512
    },
    "billing_address4": {
      "type": "string",
      "description": "<p>Account billing address line 4.</p>",
      "maxLength": 512
    },
    "billing_address5": {
      "type": "string",
      "description": "<p>Account billing address line 5.</p>",
      "maxLength": 512
    },
    "billing_attention_of": {
      "type": "string",
      "description": "<p>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.</p>",
      "maxLength": 256
    },
    "billing_customer_reference": {
      "type": "string",
      "description": "<p>Customer-specified reference to use in communications (e.g. \"Energy supply\"). If provided, it will be used for producing statements.</p>",
      "maxLength": 256
    },
    "billing_delivery_point_identifier": {
      "type": "string",
      "description": "<p>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).</p>",
      "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",
        "null"
      ],
      "format": "email",
      "description": "<p>If populated the bill/invoice communications will be emailed to this email address.</p>",
      "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 <code>info@kraken.info</code> 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": "<p>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.</p>",
      "maxLength": 510
    },
    "billing_postcode": {
      "type": "string",
      "description": "<p>Account billing address postcode.</p>",
      "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": "<p>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.</p>",
      "maxLength": 256
    },
    "business": {
      "allOf": [
        {
          "$ref": "#/$defs/Business"
        }
      ],
      "description": "<p> Information about the business this account is related to. </p>"
    },
    "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": "<p>The type of business this account related to. The business type can only be provided for business accounts.</p>",
      "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"
    },
    "communication_preference": {
      "enum": [
        "ONLINE",
        "PRINT"
      ],
      "type": "string",
      "x-spec-enum-id": "888267663b9129b6",
      "default": "ONLINE",
      "description": "<p>The communication preference for this account. Defaults to ONLINE.</p>",
      "x-enum-descriptions": {
        "ONLINE": "Online",
        "PRINT": "Print"
      }
    },
    "company_number": {
      "type": "string",
      "description": "<p>The company number for a business account.</p>",
      "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": "#/$defs/Complaint"
      },
      "description": "<p>List of complaints associated with this account that have not yet been resolved.</p>"
    },
    "consents": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountConsent"
      },
      "description": "<p>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.</p>",
      "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 <code>⁨type⁩</code> field",
          "description": "Validate that each child has unique values for the <code>⁨type⁩</code> field.",
          "possible_errors": [
            "children_with_duplicate_values"
          ]
        }
      ]
    },
    "contribution_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ContributionSchemeAgreement"
      },
      "description": "<p>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.</p>",
      "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": "#/$defs/AusTransaction"
      },
      "description": "<p>Transactions that are meant to be billed by Kraken.</p><p>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.</p><p>Their value, plus the <code>last_statement_balance</code>, must add up to the <code>transfer_balance</code>.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.current_statement_transactions"
    },
    "customers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusCustomer"
      },
      "description": "<p>List of the account customers associated with the account.</p>",
      "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": "<p>Date the account was signed up.</p>"
    },
    "debt": {
      "allOf": [
        {
          "$ref": "#/$defs/Debt"
        }
      ],
      "description": "<p>Object containing information about debt on the account.</p>",
      "deprecated": true,
      "x-use-instead": "debts"
    },
    "debts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Debt"
      },
      "description": "<p>List of debts on the account.</p>"
    },
    "deposit_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/DepositAgreement"
      },
      "description": "<p>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.</p>",
      "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": "<p>The document accessibility preferences for this account.</p>",
      "x-enum-descriptions": {
        "LARGE_PRINT": "Large print",
        "BRAILLE": "Braille",
        "SPOKEN": "Spoken",
        "": ""
      }
    },
    "dunning_path": {
      "allOf": [
        {
          "$ref": "#/$defs/DunningPath"
        }
      ],
      "description": "<p>Object containing information about which dunning path this account should go onto.</p>",
      "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"
          ]
        }
      ]
    },
    "events": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusAccountEvent"
      },
      "description": "<p>List of events to be associated with this account.</p>"
    },
    "external_account_number": {
      "type": "string",
      "description": "<p>Account number in the source system that the account is migrating from.</p>",
      "maxLength": 128
    },
    "hardship_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/HardshipAgreement"
      },
      "description": "<p>List of hardship agreements with the account. Accepts at most only one entry.</p>",
      "maxItems": 1
    },
    "historical_statement_transactions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusTransaction"
      },
      "description": "<p>Transactions that are <strong>not</strong> meant to be billed by Kraken.</p><p>If these are provided then they will appear on the initial closed statement on the account.</p><p>The sum of historic transactions must equal the <code>last_statement_balance</code> if it is provided.</p><p>If a value for <code>last_statement_balance</code> is not provided the it will be assumed this value is zero and the payload will likely fail validation.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.historical_statement_transactions"
    },
    "import_supplier": {
      "enum": [
        "ORIGIN_SOLARFLEX_INACTIVE",
        "ORIGIN",
        "WIN_CONNECT_PARENT",
        "ORIGIN_CNI",
        "ORIGIN_BUSINESS",
        "WIN_CONNECT",
        "ORIGIN_SOLARFLEX",
        "ORIGIN_BUSINESS_NO_CONTRACT"
      ],
      "type": "string",
      "x-spec-enum-id": "9572ea198e3a9787",
      "description": "<p>The import supplier code that the account will be imported in to. The import supplier code will be provided to you.</p>",
      "x-enum-descriptions": {
        "ORIGIN_SOLARFLEX_INACTIVE": "Origin SolarFlex Inactive",
        "ORIGIN": "Origin",
        "WIN_CONNECT_PARENT": "Win Connect Parent",
        "ORIGIN_CNI": "Origin CNI",
        "ORIGIN_BUSINESS": "Origin Zero Business Import Supplier",
        "WIN_CONNECT": "WinConnect",
        "ORIGIN_SOLARFLEX": "Origin SolarFlex",
        "ORIGIN_BUSINESS_NO_CONTRACT": "Origin Business - No Contracts e.g. trustee"
      }
    },
    "is_managed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "<p>Whether the account is a managed account. This option is not available for all instances of Kraken. Defaults to false.</p>",
      "deprecated": true,
      "x-use-instead": "account_type"
    },
    "is_portfolio_lead": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "<p>Whether the account is a portfolio lead account. If this flag is selected, the payload MUST include either <code>last_billed_to_date</code> or <code>last_statement_issue_date</code>, and MUST NOT include any contracts or supply points. Additionally, the import config flags MUST include <code>skip_meter_point_creation</code>. It should be set to true. Talk to the tech team if you want to use this option.</p>",
      "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": "<p>The language preference for comms for this account.</p>",
      "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": "<p>Date up to which consumption has been billed on the account.</p><p>For some markets this value can be provided at the supply point level if supply points have been billed to different points in time.</p><p>If the account has never been billed before, this should be the supply start date for the account and Kraken will bill from then.</p><p>This value is also used for the <code>last_statement_closing_date</code> and <code>last_statement_issue_date</code> where these values are not provided.</p>"
    },
    "last_payment_review_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "<p>Date in the past when the last payment review took place. If this is provided then <code>payment_adequacy_changes</code> must <strong>not</strong> be included in the payload. Providing this date will create a single payment adequacy change against the account for this date.</p>",
      "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": "<p>The balance of the latest statement issued by the previous supplier. Credit balances must be positive, debit balances must be negative.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.last_statement_balance"
    },
    "last_statement_closing_date": {
      "type": "string",
      "format": "date",
      "description": "<p>Date when the last statement was closed.</p><p>Kraken will create an initial closed statement for all historical transactions, and will use this value for its <strong>closing</strong> date. This also means that Kraken will bill any transactions (but not necessarily consumption) from the day <strong>after</strong> this date.</p><p>For backwards compatibility, when this value is omitted the importer will tolerate either current or historical transactions (but not both!) being on the <code>last_billed_to_date</code> and adjust appropriately. However, if <code>last_statement_closing_date</code> is supplied, historical transactions can be on or before this date, but any current transactions must be strictly after this date.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.last_statement_closing_date"
    },
    "last_statement_issue_date": {
      "type": "string",
      "format": "date",
      "description": "<p>Date when the last statement was issued. If this date is not given then the <code>last_statement_closing_date</code> will be used as the issue date of the initial statement.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.last_statement_issue_date"
    },
    "ledgers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/OriginLedgerRecordWithTransactions"
      },
      "description": "<p>The list of ledger records linked to the account.</p>"
    },
    "metadata": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Metadata"
      },
      "description": "<p>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.</p>"
    },
    "next_bill_due_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "<p>Date to determine the current open account statement's to date.</p>"
    },
    "notes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Note"
      },
      "description": "<p>List of notes linked to the account. A note <code>body</code> or <code>document_paths</code> must be provided.</p>"
    },
    "operations_team_name": {
      "type": "string",
      "description": "<p>The operations team name that this account should be assigned to on creation.</p>",
      "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_file_attachments": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PartnerFileAttachment"
      },
      "description": "<p>The list of S3 paths for documents to be attached to the Partner Organisation. These files must already be uploaded to S3</p>"
    },
    "partner_organisations": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PartnerOrganisation"
      },
      "description": "<p>List of partner organisations.</p>"
    },
    "payment_adequacy_changes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentAdequacyChange"
      },
      "description": "<p>List of completed payment adequacy reviews for this account. If this is provided then the <code>last_payment_review_date</code> must <strong>not</strong> be provided.</p>"
    },
    "payment_instructions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusPaymentInstruction"
      },
      "description": "<p>List of payment instructions to create for the account.</p>",
      "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"
          ]
        },
        {
          "name": "Validate payment instructions",
          "description": "Validates that only one open-ended payment instruction per type and there is no overlaps periods between payment instructions with the same type.",
          "possible_errors": [
            "invalid_payment_instruction"
          ]
        }
      ]
    },
    "payment_plans": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusPaymentPlan"
      },
      "description": "<p>List of payment plans agreed with the customer.</p>"
    },
    "payment_preferences": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentPreference"
      },
      "description": "<p>List of payment preferences to create for the account.</p>"
    },
    "payment_promises": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentPromise"
      },
      "description": "<p>List of payments the customer has promised to pay at a future date.</p>"
    },
    "payment_schedules": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentSchedule"
      },
      "description": "<p>List of payment schedules linked to the account.</p>",
      "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"
          ]
        }
      ]
    },
    "payment_terms": {
      "allOf": [
        {
          "$ref": "#/$defs/AusPaymentTerms"
        }
      ],
      "description": "<p>Overrides the default payment terms created by Kraken.</p>"
    },
    "portfolio": {
      "allOf": [
        {
          "$ref": "#/$defs/Portfolio"
        }
      ],
      "description": "<p>Information about the portfolio the account belongs to.</p>"
    },
    "references": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountReference"
      },
      "description": "<p>List of account references for the account. An example may be a secondary account number.</p>"
    },
    "remotely_communicating_meter_opt_out_reason": {
      "enum": [
        null,
        "RADIATION_OR_HEALTH_CONCERNS",
        "PRIVACY_OR_SECURITY_CONCERNS",
        "AESTHETICS",
        "RLED_HOLD_CUSTOMER_RELATED",
        "RLED_HOLD_ACCESS_RELATED",
        ""
      ],
      "x-spec-enum-id": "ac2526fc28af62c1",
      "description": "<p>Remotely communicating meter opt out reason.</p>",
      "x-enum-descriptions": {
        "None": "None",
        "RADIATION_OR_HEALTH_CONCERNS": "Radiation or health concerns",
        "PRIVACY_OR_SECURITY_CONCERNS": "Privacy or security concerns",
        "AESTHETICS": "Aesthetics",
        "RLED_HOLD_CUSTOMER_RELATED": "RLED HOLD - Customer Related",
        "RLED_HOLD_ACCESS_RELATED": "RLED HOLD - Access Related",
        "": ""
      }
    },
    "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": "<p>The sales channel to set on account when it's created. A default <code>sales_channel</code> 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:</p>\n<ul>\n    <li>If a default is set on the import supplier, and the import supplier is configured to override the value in the payload, the override will be used.</li>\n    <li>If a default is provided on the import supplier, but the import supplier is configured not to override the value in the payload, then default will only be used if the <code>sales_channel</code> value in the payload is not provided or is an empty string.</li>\n    <li>If no default <code>sales channel</code> is set on the import supplier and the import supplier is set to override the value in the payload, then we default to using <code>ACQUISITION</code> as the <code>sales_channel</code>.</li>\n    <li>If a default is <strong>not</strong> set on the import supplier and the import supplier is not set to override the value in the payload and there is no value in the payload, then the sales channel will be set to an empty string.</li>\n</ul>",
      "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"

# --- truncated at 32 KB (729 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/origin-energy/refs/heads/main/json-schema/origin-energy-origin-account-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/origin-energy-origin-account"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.