OpenADR 3.0 - IEC 62746-10-3 Compliant

Carbon accounting, parsed from the wire.

Parse utility webhook payloads through OpenADR 3.0, convert energy readings to Scope-3 carbon emissions, and get machine-readable reports. No database, no setup - just a payload.

WEBHOOK · JSON · OPENADR 3.0 · SCOPE-3 REPORT

3Scope categories
8Utility types supported
14Emission factors
<1sParse time per payload

HOW IT WORKS

Paste, parse, report.

01

Receive webhook

Your utility or energy management system sends an OpenADR 3.0 event payload to the endpoint. The payload contains meter readings, intervals, and quality metadata.

02

Parse & convert

The parser extracts every reading from the report descriptors, applies the correct emission factors per utility type (kWh, therms, gallons), and calculates Scope-1, 2, and 3 emissions.

03

Get carbon report

A structured carbon report is returned with totals and per-source breakdowns, ready for ingestion into your ESG platform, audit trail, or internal dashboard.

API REFERENCE

Endpoints

POST/api/parse

Accepts an OpenADR 3.0 utility webhook payload and returns a parsed report with all readings extracted and structured.

EXAMPLE REQUEST

POST /api/parse
Content-Type: application/json

{
  "event": {
    "id": "evt-2026-03-0427",
    "createdDateTime": "2026-03-15T14:30:00Z",
    "modificationNumber": 0,
    "eventStatus": "ACTIVE",
    "targets": [
      {
        "resourceName": "Building A - HQ"
      }
    ],
    "reportDescriptors": [
      {
        "reportSpecifierID": "rs-mar-2026-weekly",
        "reportName": "METADATA_USAGE",
        "payloads": [
          {
        ...

EXAMPLE RESPONSE

{
  "eventId": "evt-2026-03-0427",
  "resourceName": "Building A - HQ",
  "readings": [{ ... }],
  "summary": {
    "totalEnergy": 844.9,
    "readingCount": 3,
    "dataQuality": "GOOD"
  }
}
POST/api/carbon

Parses the OpenADR 3.0 payload and calculates Scope-1, Scope-2, and Scope-3 carbon emissions using built-in emission factors. Returns a complete carbon report.

EXAMPLE REQUEST

POST /api/carbon
Content-Type: application/json

{
  "event": {
    "id": "evt-2026-03-0427",
    "createdDateTime": "2026-03-15T14:30:00Z",
    "modificationNumber": 0,
    "eventStatus": "ACTIVE",
    "targets": [
      {
        "resourceName": "Building A - HQ"
      }
    ],
    "reportDescriptors": [
      {
        "reportSpecifierID": "rs-mar-2026-weekly",
        "reportName": "METADATA_USAGE",
        "payloads": [
          {
        ...

EXAMPLE RESPONSE

{
  "scope1": 65.19,
  "scope2": 311.18,
  "scope3": 58.33,
  "totalEmissions": 434.7,
  "breakdown": [{ ... }],
  "generatedAt": "2026-03-15T14:30:05Z"
}

EXAMPLE PAYLOADS

Two flavors of utility data.

PAYLOAD AOFFICE BUILDING

A mid-size commercial building with electric and natural gas meters. Both readings have "GOOD" quality - no estimation needed. This is the cleanest path through the parser.

{
  "event": {
    "id": "evt-2026-03-0427",
    "createdDateTime": "2026-03-15T14:30:00Z",
    "modificationNumber": 0,
    "eventStatus": "ACTIVE",
    "targets": [
      {
        "resourceName": "Building A - HQ"
      }
    ],
    "reportDescriptors": [
      {
        "reportSpecifierID": "rs-mar-2026-weekly",
        "reportName": "METADATA_USAGE",
        "payloads": [
          {
            "resourceID": "meter-hq-001",
            "intervalPeriod": {
              "start": "2026-03-15T14:00:00Z",
              "duration": "PT1H"
            },
            "values": [
              {
                "resourceID": "meter-hq-001",
                "payloadType": "ELECTRICITY",
                "units": "kWh",
                "dataQualities": [
                  "QUALITY_GOOD"
                ],
                "quality": "GOOD",
                "value": 450.5,
                "confidence": 95,
                "accuracy": 0.5
              },
              {
                "resourceID": "meter-hq-gas-001",
                "payloadType": "NATURAL_GAS",
                "units": "therms",
                "dataQualities": [
                  "QUALITY_GOOD"
                ],
                "quality": "GOOD",
                "value": 12.3,
                "confidence": 92,
                "accuracy": 0.3
              }
            ]
          },
          {
            "resourceID": "meter-hq-002",
            "intervalPeriod": {
              "start": "2026-03-15T15:00:00Z",
              "duration": "PT1H"
            },
            "values": [
              {
                "resourceID": "meter-hq-002",
                "payloadType": "ELECTRICITY",
                "units": "kWh",
                "dataQualities": [
                  "QUALITY_GOOD"
                ],
                "quality": "GOOD",
                "value": 382.1,
                "confidence": 94,
                "accuracy": 0.4
              }
            ]
          }
        ]
      }
    ]
  },
  "metadata": {
    "source": "utility-webhook",
    "webhookId": "wh_d3f4a7b2c9e1",
    "timestamp": "2026-03-15T14:30:05Z"
  }
}
PAYLOAD BDATA CENTER

A data center with high electric load plus backup generator fuel. The fuel reading is "ESTIMATED" quality, which flags the report and reduces confidence in the Scope-1 total. The parser preserves quality metadata through every step.

{
  "event": {
    "id": "evt-2026-03-0428",
    "createdDateTime": "2026-03-16T08:00:00Z",
    "modificationNumber": 0,
    "eventStatus": "ACTIVE",
    "targets": [
      {
        "resourceName": "Data Center - West"
      }
    ],
    "reportDescriptors": [
      {
        "reportSpecifierID": "rs-dc-west-daily",
        "reportName": "METADATA_USAGE",
        "payloads": [
          {
            "resourceID": "meter-dc-001",
            "intervalPeriod": {
              "start": "2026-03-16T07:00:00Z",
              "duration": "PT1H"
            },
            "values": [
              {
                "resourceID": "meter-dc-001",
                "payloadType": "ELECTRICITY",
                "units": "kWh",
                "dataQualities": [
                  "QUALITY_GOOD"
                ],
                "quality": "GOOD",
                "value": 2840,
                "confidence": 96,
                "accuracy": 0.3
              },
              {
                "resourceID": "meter-dc-gen-001",
                "payloadType": "FUEL_OIL",
                "units": "gal",
                "dataQualities": [
                  "QUALITY_ESTIMATED"
                ],
                "quality": "ESTIMATED",
                "value": 45.2,
                "confidence": 80,
                "accuracy": 2
              }
            ]
          }
        ]
      }
    ]
  },
  "metadata": {
    "source": "utility-webhook",
    "webhookId": "wh_a1b2c3d4e5f6",
    "timestamp": "2026-03-16T08:00:10Z"
  }
}

LIVE DEMO

Try it now.

Paste a utility payload, upload a JSON file, or use the example. The parser runs entirely on the client - nothing is sent to a server.

UNDERSTANDING THE REPORT

What each field means.

scope1kg CO2e

Direct emissions from sources owned or controlled by the reporting entity (fuel combustion, company vehicles). Calculated from natural gas, fuel oil, and propane readings using combustion-based factors.

scope2kg CO2e

Indirect emissions from purchased electricity, steam, or other energy. The dominant category for most organizations. Uses EPA eGRID average emission factors based on the reading units.

scope3kg CO2e

All other indirect emissions in the value chain (fuel extraction, transmission losses). Applied as upstream factors on each utility type. Includes well-to-tank losses for gas and grid loss premiums for electricity.

breakdownarray of objects

Per-source detail showing the original reading value, its units, and the calculated Scope-1, 2, and 3 contributions. Use this for granular analysis or to feed sub-category totals into your ESG framework.

dataQualityGOOD / ESTIMATED / QUESTIONABLE / MIXED

Summarizes the quality of the source readings. GOOD means all readings are verified. ESTIMATED or MIXED flags readings that were interpolated, extrapolated, or came from low-confidence meters.

Start parsing your utility data.

OpenADR 3.0 parsing and carbon accounting, ready for your webhook pipeline. No account, no API key - just the payload.

Try the parser

AMCAA - AUTOMATED SCOPE-3 CARBON ACCOUNTING