Suppliers

Solution Eligiblity Solution Overview Getting Started New Supplier Users Ongoing Workflow API Reference Authentication Endpoints Bulk Data Files authorizations_file intervals_files Availability of Bulk Data Lifespan of Pre-signed URLs Data Retention Period Encoding & Delimiters Daily Scenarios Daily Interval Files Why Interval Data May Not Be Present Frequently Asked Questions Can multiple users of a supplier access the API? How is this different from Green Button Connect?

This solution is only available to Massachusetts-licensed suppliers and municipal aggregators.

Suppliers and municipal aggregators (“Suppliers”) need timely access to their customers' interval data for a variety of use cases including bill verification, analytics, and customer experience.

As a part of their Massachusetts smart meter deployments, some utilities are offering a Bulk Data Exchange solution, powered by UtilityAPI, to deliver post-validation, estimation, and editing (VEE) revenue-quality 15-minute or 5-minute interval data for all of a supplier's customers with AMI meters on a daily basis, within 48 hours of processing. Interval data fields, example API response, and change events handling are detailed below.

Bulk Data Exchange Solution Data Flow Diagram

Suppliers' Electronic Data Interchange (EDI) transactions and this Bulk Data Exchange (BDX) solution are complementary. Suppliers should expect to continue to receive their customers' account and billing summaries data from their existing EDI integrations.

This solution (BDX) will deliver interval data for suppliers' current customers where the supplier is the supplier of record for a given Electric Distribution Company's (EDC) accountID in the respective EDC's system. Interval data sharing is opt-out, meaning that a customer's interval data will be shared with an approved supplier unless the customer explicitly opts out of, or revokes, their interval data sharing authorization with their supplier. See “Customer opts out of interval data sharing via utility's Data Sharing Portal” below.

The following events impact a customer's interval data sharing with a supplier, similar to existing EDI processes.

Change Event Change Event Type Implication
Customer move-out of utilities' MA territory Customer-level

All of an accountID's service points' authorizations will expire, ceasing interval data sharing, upon the account's status change from active to inactive within utility data files.

Outcome: Supplier will no longer receive data for this account ID's service points.

Customer switches to new supplier Supplier-level

All of the accountID's service points' authorizations will expire with the existing supplier as of the account's effective supplier switch date.

All of the accountID's service points' authorizations will be created with the new supplier as of the account's effective start date with their new supplier. The new supplier will receive up to 24 months of interval readings for all the accountID's service points.

Outcome: Supplier will begin to receive data for this account ID's service points.

Customer switches to basic service Supplier-level

Similar to when a “Customer switches to new supplier” with the exception that the new supplier is the default Electric Distribution Company (EDC) who will provide electricity supply and delivery.

Outcome: Supplier will no longer receive data for this account ID's service points.

Customer opts out of interval data sharing via utility's Data Sharing Portal (hosted by UtilityAPI) Customer opt-out

A customer will have the ability to opt-out of interval data sharing with their existing supplier through the EDC's portal. If the customer opts-out, all of the account's service points' authorizations will be revoked, ceasing interval data sharing effectively immediately (the revocation date).

This opt-out will not transfer in the case of the customer switching suppliers. It will not impact customer data shared through the EDCs EDI processes, only interval data shared through this solution.

Outcome: Supplier will no longer receive data for this account ID's service points.

Smart meter upgrades Customer-level

If a supplier is not receiving an accountID's service point's interval data, and none of the above events have occurred, the given service point does not have an upgraded AMI meter. Therefore, 5 or 15 minute interval readings are not being generated for that service point.

When a smart meter is installed and begins generating interval readings, the solution will begin sharing the authorized service point's interval data.

Outcome: Supplier will begin to receive data for this account ID's service points.

You must have a UtilityAPI account in order to use this solution. While you only need one UtilityAPI account, you must register with each EDC you want your customers' interval data for.

Below is a summary of the UtilityAPI account creation and EDC registration experience.

Screenshots of multi-step supplier registration

Once you've successfully submitted your enrollment for access, you will be redirected to this API documentation where you can begin developing your API integration using the API Reference and its mock data.

At this time, your registration will be pending approval by the EDC. You can create API tokens, however, it will not allow you access to any of your customer data until the EDC updates your registration status to “Approved”. You can check the status of your registration in settings.

In order to approve your registration, the EDC will verify that the registering user is a valid employee or representative of the approved and licensed supplier selected from the dropdown during the registration process. If for any reason the EDC is unable to approve your registration, it will send you an email to the email address associated with your registration describing the issue.

You can view and manage your registration status. You will receive an email notification once your registration has been reviewed by the EDC.

Once your registration is approved, your API token will grant you access to the API where you can retrieve your customers' daily interval files.

Upon approval, the next day's set of files will be available and subsequent days' files will be generated each day forward as long as your registration remains in good standing.

A diagram showing the data exchanged between suppliers, UtilityAPI, and the utility

All endpoints require an API token. You must include the API token in the Authorization header using the Bearer format. You can generate an API token in your user settings in the UtilityAPI Dashboard.

GET /api/v3/suppliers/files

Returns download links for bulk data files for a given utility and date.

Query Parameters
Parameter Required? Type Format Description Example
utility yes enum (string) One of the supported `Utility` Must be one of:
  • "EVRSRCMA"
  • "NATIONALGRID"
"EVRSRCMA"
process_date yes string YYYY-MM-DD Must be within the availability window. See Retention Period "2025-12-15"
Response

Content Type: application/json

Properties:

Property Type Format Description
supplier_id string Unique ID of the requesting supplier
date string YYYY-MM-DD
utility enum (string) One of the supported `Utility`
authorizations_file JSON object
{
    "type": "authorizations",
    "url": "string",
    "expires_at": "ISO 8601 string"
}
Pre-signed links to download files, valid for a limited time. See Lifespan of Pre-signed URLs
intervals_files JSON array of objects
[
    {
        "type": "string",
        "url": "string",
        "expires_at": "ISO 8601 string"
    }
    ...
]

Pre-signed links to download files, valid for a limited time. See Lifespan of Pre-signed URLs

Interval file types are: "daily_intervals", "historical_intervals_for_new_auths", and "supplier_historical_backfill".

Examples

Example request:

curl -H 'Authorization: Bearer API_TOKEN_HERE' \
    "https://utilityapi.com/api/v3/suppliers/files?utility=EVRSRCMA&process_date=2025-12-15"

Example response:

{
    "supplier_id": "Supplier 1234",
    "date": "2025-12-15",
    "utility": "EVRSRCMA",
    "authorizations_file": {
        "type": "authorizations",
        "url": "{presigned_url}",
        "expires_at": "2025-12-15T00:15:00Z"
    },
    "intervals_files": [
        {
            "type": "daily_intervals",
            "url": "{presigned_url}",
            "expires_at": "2025-12-15T00:15:00Z",
        },
        {
            "type": "historical_intervals_for_new_auths",
            "url": "{presigned_url}",
            "expires_at": "2025-12-15T00:15:00Z",
        }
    ]
  }

Suppliers will request files through an API on a daily basis. There is no graphical user interface (GUI) or front-end. The API's response will include download links to intervals files.

Contains the full set of a supplier's interval data sharing authorizations with their customers as of that day. It maps a supplier's customers' service points to their respective EDC accountIDs and displays the current status of each service point's interval data sharing authorization with the supplier.

If an accountID has multiple service points, there will be a row per service point.

Field Description
supplier_id Supplier ID
account_id EDC's account_ID for the customer
service_point_id EDC's service_point_id for the customer
pod_id Point of delivery ID
created Data authorization was created by UtilityAPI
is_revoked Boolean value of if customer revoked authorization through EDC's customer authorization management interface
revoked Revoked timestamp if true
is_expired

Boolean value that is set to true when the account no longer has an active agreement with the supplier:

  • account moved out of EDC service territory
  • account switched suppliers

If set to true, the accountID's service points' interval data is no longer available via the authorization

If expires is a future date, is_expired is false until that date is reached.

expires

Timestamp of when the authorization:

  • will expire (if timestamp is set into the future)
  • expired (if timestamp is in the past)

An authorization expires when an account:

  • moves out of the EDC's service territory
  • switches suppliers

expires_reason If true, prefill to one of the following:
  • "Inactive-Moved"
  • "Inactive-Switched"

The last 24 hours worth of intervals will be presented along their associated service points i.e. each interval file will contain data for multiple service points.

Interval data for each day may be split across multiple CSV files to limit overall file size.

If applicable for any given day, any newly enrolled customers' historical intervals will also be shared, including up to 24 months of interval data or however much is available.

Field Description Example
account_id

EDC's account_ID for the customer

Type: VARCHAR.

9999
service_point_id

Utility's unique identifier for the service point. A service point identifies an unchanging device location where service is delivered

Type: VARCHAR.

12345
usage_value

Usage value amount based on meter read in units determined by meter's units. Include three decimal places or higher for watt-level data

Type: Number.

0.456
date

End date of meter read interval.

Type: VARCHAR (yyyyMMdd).

20251213
time

Time representation in 24-hour format in the local time zone. The timestamp represents the end of the read, not the beginning of the read. The following time intervals are supported: 15 minute

Type: VARCHAR (HHmm).

0015
units

Unit of measurement for the usage value, to include power factor

Examples of supported values include:

  • KWH: Kilowatt-Hours
  • PF: Power Factor

Type: VARCHAR.

KWH
is_estimate

A flag to indicate whether the usage read is estimated or not.

Supported Values:

  • A: Actual read by utility
  • E: Estimated read

Type: VARCHAR.

A
utc_offset

The offset from UTC time for the service_point_id in +/-HHmm format. For example, -0800 for a service_point_id that is 8 hours and 0 minutes behind UTC, or +0100 for a service_point_id that is one hour and 0 minutes ahead of UTC.

Type: VARCHAR.

-0400
service_type

The service type provided by service points of this type.

Allowed values:

  • E: Electric

Type: VARCHAR.

E

Data download links for a given date will typically become available within 72 hours of meter reads, to allow for VEE and processing. For example, December 14th's data will be ready on December 17th at the latest. We will generally be attempting to make the data available much earlier than that.

Prior to the readiness of data, the endpoint will return HTTP code 202 indicating that the user should wait and try again later.

Requestors are expected to implement scheduling, or polling, for their daily API calls. It's recommended to implement exponential backoff to gracefully handle retry events by increasing the wait time exponentially (e.g., 5 minutes, 15m, 30m, 1hr) to ensure a day's data is collected.

File download links will remain valid until the expiry time returned in the same endpoint response. The time for which a download link will remain valid is approximately 15 minutes. After expiry, the user may make another request to receive new download links.

The endpoint will accept date parameters that are within the past 30 days. After 30 days, download links for the out of range date will no longer be available and the endpoint will return HTTP code 400.

CSV files will be encoded in UTF-8 and will have comma delimitters.

Data Order

Suppliers should read files in the order that they appear in the endpoint response. When files are read in this order, rows will be in ascending (service_point_id, date, time) order.

Duplicate Rows and Quality Flag

When there is more than one row with the same (service_point_id, date, time), the one that appears latest should be kept; hence why reading the files in order is important. This includes scenarios where the reading is estimated and is updating over time.

Example Files and Desired End State

Take for example the following truncated interval files received on December 14th:

  • intervals_1.csv (Dec 14):
service_point_id date time usage quality_flag
s123 20251213 2245 50.234 Actual
s123 20251213 2245 1.111 Actual
s123 20251213 2300 1.054 Actual
s123 20251213 2315 1.109 Estimate
s123 20251213 2330 1.396 Estimate
s123 20251213 2345 1.511 Estimate
  • intervals_2.csv (Dec 14):
service_point_id date time usage quality_flag
s123 20251214 0000 1.522 Estimate

And the following interval files received on December 15th:

  • intervals_1.csv (Dec 15):
service_point_id date time usage quality_flag
s123 20251213 2315 1.234 Actual
s123 20251213 2330 1.266 Actual
s123 20251213 2345 1.370 Actual
s123 20251214 0000 1.458 Actual
s123 20251214 0015 1.529 Actual
s123 20251214 0030 1.589 Actual

The files should be ingested in this order:

  • intervals_1.csv (Dec 14)
  • intervals_2.csv (Dec 14)
  • intervals_1.csv (Dec 15)

And the reading for this service point should be understood as:

service_point_id date time usage quality_flag
s123 20251213 2245 1.111 Actual
s123 20251213 2300 1.054 Actual
s123 20251213 2315 1.234 Actual
s123 20251213 2330 1.266 Actual
s123 20251213 2345 1.370 Actual
s123 20251214 0000 1.458 Actual
s123 20251214 0015 1.529 Actual
s123 20251214 0030 1.589 Actual

Net Metering

The Channel Type column is used for distinguishing between measured quantities such as consumption, generation, net usage, etc. These can be ingested separately as multiple channels. Alternatively, if only the net value is desired, rows with Channel Type other than NET_USAGE may be ignored.

Daily interval data is only provided for active and authorized service points. If a customer:

  • becomes inactive by moving out of the EDC's service territory
  • switches from you being their supplier
  • opts out of interval data sharing
  • or opts out of having a smart meter installed
interval data will not be provided. This will be reflected in what service points are included in the Interval files.

A supplier company can have many users, or employees, who can use the solution. Each user can generate API tokens to be used to access data. Each set of API credentials point to the same supplier company's dataset; there is not a unique dataset per user.

For every registered supplier, all associated DUNS+4 accounts will be available to the supplier. Each registered and approved user from a supplier has access to all of that suppliers' authorized customer accounts. Authorizations are scoped to an entire account, so if an applicable change event occurs (such as a customer discontinuing their relationship with a supplier), availability of data for all service points in that account will change accordingly.

What You Receive

  • A consolidated intervals dataset containing:
    • All authorized service points
    • Across all authorized account IDs
    • For all authorized account IDs associated for all your DUNS+4

What This Means in Practice

  • There are no separate folders, files, or partitions per DUNS+4.
  • If you have multiple DUNS or DUNS+4, they will all be mapped to your supplier organization. You can request data for any of your DUNS
  • If a customer accountID has an active authorization with your supplier organization, all of its service points' interval data will appear in your available intervals files.

Green Button Connect is an opt-in data sharing service for any type of third party to request consent from a utility customer to access their utility account, billing, and interval data. Whereas utility customers must explicitly grant consent, or authorization, to share their data with a select third party with Green Button Connect, this solution utilizes an opt-out model. Because suppliers have received their customers' consent to access their utility data as a prerequisite to providing them with electricity supply, it has been determined that suppliers are entitled to receive these same customers' smart meter data without additional consent. However, similar to Green Button Connect, customers are still in control of their interval data sharing so can manage, or opt-out, of interval data sharing at any time.

For suppliers, Green Button Connect may be viewed as a way to request access to prospective customers' account, billing, and interval data whereas this solution gives you access to your existing customers' interval data only.

National Grid and Eversource have Green Button Connect platforms deployed for their Massachusetts customers. Both are powered by UtilityAPI. You can be signed up for this solution and Green Button Connect at the same time. To register for Green Button Connect, click here.