Your files are not stored.
Uploaded files are processed in memory only and are never saved.
Validate your meter data files
Upload up to 20 XLSX or CSV files following the Meter Data for Bridge T-EACs standard template. We'll check each one against all format and data quality requirements.
Drag & drop your XLSX or CSV files here
or click to browse
or , , or
Standard Template
Download the Meter Data for Bridge T-EACs file template or examples with sample data.
The valid example is a full local day and passes. The warnings example starts at 01:00 and stops at 22:00 local and has one null reading, so it passes with midnight and missing-reading warnings. The errors example has the same partial day plus a non-numeric value, so it fails and still shows those warnings.
Required columns:
datetime_start_local, local_timezone, datetime_start_utc, value, unit_of_measurement, meter_id, eac_facility_id, eac_registry_id
Validation Requirements
File-Level
- File must be
.xlsxor.csvformat - File must contain exactly one worksheet
- File must contain exactly one
eac_facility_idvalue across all rows - File may contain at most 10 distinct
meter_idvalues. Split a larger set of meters across separate files. - File must use exactly one
unit_of_measurement, onelocal_timezoneand oneeac_registry_idacross all rows — these are properties of the facility and cannot vary row to row
Required Headers
All 8 headers must be present in the first row:
datetime_start_local
local_timezone
datetime_start_utc
value
unit_of_measurement
meter_id
eac_facility_id
eac_registry_id
Column Format Requirements
| Column | Format | Example |
|---|---|---|
| datetime_start_local | RFC 3339 with timezone offset | 2025-01-01T00:00:00-06:00 |
| local_timezone | IANA Area/Location format | America/Chicago |
| datetime_start_utc | RFC 3339, must end with Z or +00:00 |
2025-01-01T06:00:00Z |
| value | Numeric, . for decimals, no other characters. Enter 0 when the plant did not produce (outage, curtailment). Enter null when the plant was producing but the metering system failed to record a reading. Never leave the cell blank. |
10321.887321 |
| unit_of_measurement | One of: GWh, MWh, kWh, Wh |
MWh |
| meter_id | Meter identifier for the datapoint. A file may contain at most 10 distinct values. If the meter_id is not known and there is only one dataset per eac_facility_id, the eac_facility_id can be used as the meter_id. |
19883332 |
| eac_facility_id | Production device ID as used in EAC Registry | GEN2804 |
| eac_registry_id | Valid registry ID from the | m-rets |
| metering_type Optional | One of gross or net. Defaults to gross when the column is omitted. For gross the value must be non-negative; net allows negative values. |
gross |
| metering_share Optional | One of contracted or total generation. Defaults to contracted when the column is omitted. |
contracted |
Timestamps must be plain text. Enter
datetime_start_local and
datetime_start_utc as RFC 3339 strings — do not use
Excel's native date/time cell type. Excel dates are timezone-naive and drop the offset, so
they are rejected. In Excel, format the column as Text before entering the values.
Valid registry IDs:
| Registry ID | Name(s) | Country / Region |
|---|---|---|
| anre | ANRE | Romania |
| atos | ATOS (E-Control) | Austria |
| brugel | Brugel | Belgium (Brussels) |
| carbonzero | Carbonzero | Canada |
| cel | CEL (Clean Energy Certificates) | Mexico |
| cer | CER (Clean Energy Regulator, REC Registry) | Australia |
| cer-cne | CNE | Chile |
| certigy-hr | Certigy (HROTE) | Croatia |
| cesar | Cesar (Energimyndigheten) | Sweden |
| cmo.grexel | CMO.grexel (SEMO) | Ireland |
| cmo.iceland | CMO.Iceland (Landsnet) | Iceland |
| creg | CREG | Belgium (Federal) |
| e-cwape | e-CWaPE (SPW Energie) | Belgium (Wallonia) |
| eego | EEGO (REN) | Portugal |
| eex | EEX | Germany |
| elering | Elering | Estonia |
| ercot | ERCOT | United States (Texas) |
| evident | Evident (I-REC registry) | International (I-REC) |
| finextra | FinExtra | Finland |
| gec | GEC (Green Electricity Certificate) | China |
| gec-jp | Green Energy Certificate | Japan |
| g-rex.albania | G-REX (ERE) | Albania |
| g-rex.denmark | G-REX (Energinet) | Denmark |
| g-rex.hungary | G-REX (MEKH) | Hungary |
| g-rex.latvia | G-REX (AST) | Latvia |
| g-rex-lithuania | G-REX (Litgrid) | Lithuania |
| g-rex-luxembourg | G-REX (ILR) | Luxembourg |
| g-rex.serbia | G-REX (EMS) | Serbia |
| hknr | HKNR (Herkunftsnachweisregister) | Germany |
| j-credit | J-Credit | Japan |
| jepx | JEPX (Non-Fossil Certificate) | Japan |
| k-re100 | K-RE100 (KEA) | South Korea |
| lagie | DAPEEP (formerly LAGIE) | Greece |
| mirecs-apx | MIRECS (APX) | United States (Michigan) |
| m-rets | M-RETS | United States / Canada |
| myverticer | myVertiCer (VertiCer) | Netherlands |
| nar-apx | North American Renewables Registry (APX) | United States |
| nc-rets | NC-RETS | United States (North Carolina) |
| necs | NECS (Statnett) | Norway |
| nepool-gis | NEPOOL GIS | United States (New England) |
| nvtrec | NVTREC | United States (Nevada) |
| nygats | NYGATS | United States (New York) |
| nzec | NZ Energy Certificate | New Zealand |
| nzecs | NZ Energy Certificate System | New Zealand |
| ofgem | Ofgem (REGO) | United Kingdom |
| okte | OKTE | Slovakia |
| ote | OTE | Czech Republic |
| pjm-gats | PJM-GATS | United States (PJM region) |
| poi.borzen.si | poi.borzen.si (Borzen / Energy Agency) | Slovenia |
| pronovo | Pronovo | Switzerland |
| recsgse | GSE (RECS) | Italy |
| rews | REWS | Malta |
| seda | SEDA | Bulgaria |
| tge | TGE (RGP) | Poland |
| tigr | TIGR (APX / Evident) | International |
| t-rec | T-REC | Taiwan |
| tso-cy | TSO-Cy (TSOC) | Cyprus |
| vector | Vector (CNMC) | Spain |
| vreg | VREG | Belgium (Flanders) |
| wregis | WREGIS | United States (Western) |
| yek-g | YEK-G | Turkey |
Time-Series Requirements
- No blank cells: All required columns must be populated in every data row — no empty cells allowed.
- Time continuity: Every interval needs a row with a timestamp and a value. No gaps are allowed, and no interval may be skipped because there is nothing to report.
- Zero vs. missing readings: Use
0when the plant was not producing, for example during an outage or curtailment. Usenullwhen the plant was producing but the metering system failed and no reading exists. Anullinterval passes validation but is counted in a warning, because no energy can be certified for it. - Interval readings: Values must represent generation within the time interval, not accumulated meter totals. A meter series whose values never decrease over 24 or more readings is flagged as a likely cumulative register export.
- Consistent intervals: All time intervals within a meter series must be the same duration.
- Supported granularity: The interval between consecutive readings must be 5 min, 15 min, 30 min, or 1 hour. Daily rows (e.g. 24 hourly columns per day), monthly totals, or any other interval are rejected.
- Local midnight bounds: Each meter series should start at local midnight (
00:00:00) and finish at local midnight. Finishing at midnight means the last reading plus the series interval lands on00:00:00— hourly data ends with a 23:00 reading, 15-minute data with 23:45. A series that starts or stops mid-day is warned, not rejected. - UTC/local consistency:
datetime_start_utcmust matchdatetime_start_localadjusted by the timezone offset. - Timezone offset consistency: The offset written in
datetime_start_localmust be the offset thatlocal_timezoneis actually on at that instant (e.g.America/Chicagois-06:00in winter and-05:00in summer). - DST handling: UTC timestamps must stay continuous and unique through DST transitions. Local timestamps must reflect the change (missing hour in spring, repeated hour in fall) by switching their offset — a file that keeps the winter offset all year is rejected by the timezone offset check.
API Integration
Validate files programmatically by sending a POST request with one XLSX or CSV file under file, or up to 20 files under files. See the full API reference for endpoints, request and response schemas, and status codes.
Limitations
Max file size
8 MB
Larger files are rejected with 413.
Max rows
50,000
Files with more rows are rejected with 400.
Max files
20
Batch uploads with more files are rejected with 400.
Rate limit
15 / min
Per IP address; exceeding returns 429.
Files are processed in memory only and are never stored.