How to Understand the NEM12 CSV Format

A field-by-field technical reference to record types, NMIConfiguration, and quality flags.

Last Updated: 2026-08-05

Key Takeaways

  • The NEM12 CSV Format is a semi-structured, non-tabular exchange format from AEMO. One file mixes several record types with different schemas.
  • The 100 Record opens the file and the 900 Record closes it. Every row between them belongs to a 200-300-400 block.
  • The 200 Record is the parent row. It declares the NMI, the NMI Suffix, the NMIConfiguration string, the Unit of Measure, and the IntervalLength.
  • The 300 Record is the child row. It carries one day of unpivoted readings, usually in kWh, for a single register such as E1 or B1.
  • The 400 Record decouples quality from the readings. It overrides the Quality Flag and the Method Flag for a range of intervals inside one day.
  • Every timestamp uses AEST, a fixed offset of UTC+10 with no daylight savings adjustment.
  • Real portal exports depart from the specification in small ways. Parse defensively, and report each deviation rather than fail in silence.

What Makes the NEM12 CSV Format Semi-Structured

AEMO defines the NEM12 CSV Format in the Meter Data File Format (MDFF) specification. AEMO built the format for system-to-system exchange, not for direct reading in a spreadsheet.

DNSPs and electricity retailers supply NEM12 files for three reasons: the format is well defined, it is readily available, and it carries Interval Data. Ease of use for software tools, energy assessors, or end customers is not one of those reasons.

Nine Properties of the NEM12 CSV Format

  • Semi-Structured: The format enforces strict comma separation and defined record codes. It does not enforce one consistent column schema across all rows.
  • Hierarchical (parent-child): A 200 Record is a parent block. It sets the context for the 300 Records and the 400 Records below it.
  • Mixed-Record (heterogeneous): One file intermingles headers, metadata, readings, and event rows. Each row type follows a different schema.
  • Unpivoted (long format): A 300 Record lists each interval reading in ascending time order. The format gives no interval a column header of its own.
  • Decoupled: A 400 Record holds quality information apart from the numbers it describes. The reading itself carries no per-interval flag.
  • Context-Dependent: A 300 Record does not name the NMI, the register, or the Unit of Measure. The parent 200 Record holds all three.
  • Conditional (segmented): A 400 Record appears only when part of a day differs from the day-level flag. The quality of one interval can therefore span two rows.
  • Flagged: Interval rows embed a Quality Flag such as A (Actual), S (Substituted), or F (Final Substitute). An ordinary spreadsheet holds raw numbers only.
  • Non-Tabular: Semi-structure, hierarchy, and mixed records together prevent a single consistent grid. No one header row can describe the whole file.

A NEM12 file is a sequence of record blocks. The leading number on each row selects the schema for that row.

Record TypeNameQuantity Per FilePurpose
100Header RecordOne, as the first rowFile-level metadata: format version, creation timestamp, and participant identifiers
200NMI Data Details RecordOne per NMI and NMI SuffixNames the NMI, the register, the Unit of Measure, and the IntervalLength for the rows that follow
300Interval Data RecordOne per day, per registerOne full day of interval readings, plus the day-level Quality Flag
400Interval Event RecordZero or more after a 300 RecordPer-interval quality and method overrides for part of the preceding day
500B2B Details RecordRare in customer downloadsBusiness-to-business settlement data, which customer analysis does not need
900End of Data RecordOne, as the last rowCloses the file that the 100 Record opened, and carries no data fields

The blocking order inside a compliant file is fixed.

  1. One 100 Record opens the file.
  2. One 200 Record opens a block for a single NMI and NMI Suffix.
  3. One or more 300 Records follow, one per day.
  4. Zero or more 400 Records follow any 300 Record that needs an override.
  5. Steps 2 to 4 repeat for each further NMI and NMI Suffix.
  6. One 900 Record closes the file.

The 100 Record — File Header

The 100 Record is always the first row in a NEM12 file. It carries file-level metadata and no energy data.

FieldField NameExample ValueNotes
1RecordIndicator100Always 100
2VersionHeaderNEM12NEM12 for interval data. A file of accumulation data carries NEM13 here instead
3DateTime202401150930File creation timestamp, in YYYYMMDDhhmm form
4FromParticipantPOWERCORParticipant identifier of the party that generated the file
5ToParticipantCUSTOMERIntended recipient. A customer portal export often omits this field or writes a generic value

A complete 100 Record reads as one short line: 100,NEM12,202401150930,POWERCOR,CUSTOMER. Read the VersionHeader first, because a NEM13 file carries accumulation totals rather than intervals. Our guide on how to choose NEM12 vs NEM13 meter data covers that difference before you request a file.

The 200 Record — NMI Data Details

The 200 Record opens a new block. It names the connection point and the register that the following 300 Records describe.

FieldField NameExample ValueNotes
1RecordIndicator200Always 200
2NMI6200000000The 10-character National Metering Identifier, written without the check digit
3NMIConfigurationE1B1Q1Every NMI Suffix present for this NMI, concatenated with no delimiter
4RegisterID1Internal register identifier, which often matches the digit in the NMI Suffix
5NMISuffixE1The register that this block describes: E1, E2, B1, Q1, K1, and so on
6MDMDataStreamIdentifierN1Internal stream identifier, which customer analysis does not need
7MeterSerialNumberMETSER123Serial number of the physical meter at the premises
8UOMkWhUnit of Measure for every reading below: commonly kWh, and kVARh for Q1 and K1
9IntervalLength30Interval duration in minutes: commonly 30, and 5 or 15 on some meters
10NextScheduledReadDate20240301Date of the next scheduled read, in YYYYMMDD form. A portal export may omit it

What IntervalLength Declares

IntervalLength sets the interval duration for every 300 Record in the block. Read it before you count readings, because one file can carry more than one value.

  • Unit of Measure first: a block that declares Wh or MWh needs a scale change before its values join a kWh total.
  • IntervalLength second: the declared duration fixes how many readings each 300 Record in the block carries.
  • NMI Suffix third: the suffix names what the readings measure, and the reading never repeats it.

Reading the NMIConfiguration String

NMIConfiguration is a compact summary of every register present for one NMI. It concatenates the NMI Suffix codes with no separator between them.

NMIConfigurationWhat the String Declares
E1Grid import only, with no solar export and no Controlled Load
E1E2Grid import plus a second import register, typically a Controlled Load such as hot water
E1B1Grid import plus solar export, which is the common pattern for a solar household
E1B1E2Grid import, solar export, and a Controlled Load register
E1B1Q1Grid import, solar export, and Reactive Energy import. Q1 is not used in solar analysis
E1Q1B1K1All four registers. Q1 and K1 hold Reactive Energy, which energy analysis ignores

NMIConfiguration is the quickest way to see whether a file holds solar export data. Read that one field instead of scanning every 300 Record in the file.

What the NMI Suffix Tells You About a Register

  • E1: a grid import register. Where a meter carries more than one E register, E1 is almost always the Main or General register.
  • E2 and E3: further grid import registers. A Controlled Load on a Dedicated Circuit, such as hot water, typically appears on E2.
  • B1: solar export. B1 is always the register for electricity that the site generates and sends back to the grid.
  • Q1 and K1: Reactive Energy import and export, measured in kVARh rather than kWh.

Why the register matters: solar generation on site can only supply demand from loads on the Main or General register. A hot water circuit on E2 cannot draw from the solar generated at the same site. From time to time a NEM12 file appears to show otherwise. Treat such a file as suspect, and verify it before you rely on it.

Our guide on how to interpret your smart meter data covers the register codes in more depth. If your bill prints only a 10-digit NMI, our NMI Checksum Digit Calculator derives the 11th check digit that some portals ask for.

Try our NMI Checksum Digit Calculator Tool

The 300 Record — Interval Data

The 300 Record carries one full day of readings for the register named in the parent 200 Record. It is the main data row in the NEM12 CSV Format.

FieldField NameExample ValueNotes
1RecordIndicator300Always 300
2IntervalDate20240115The date of the readings, in YYYYMMDD form
3 to 50IntervalValues0.123,0.245,…,0.18748 values for 30-minute data, in ascending time order. A 5-minute block carries 288 values
51QualityMethodAThe day-level Quality Flag, plus the Method Flag where the specification requires one
52ReasonCode(optional)Numeric reason for a substituted or estimated day
53ReasonDescription(optional)Free text, which the specification requires where ReasonCode is 0
54UpdateDateTime20240115093000When the data provider last updated this row, in YYYYMMDDhhmmss form
55MSATSLoadDateTime(optional)When the row was loaded into MSATS (Market Settlement and Transfer Solution, the AEMO registry system). A portal export often omits it

The field positions above apply to a block of 30-minute data. Every position after the readings shifts with IntervalLength, so QualityMethod sits at position 291 in a 5-minute block.

Interval Numbering and AEST Timestamps

Every interval time in the NEM12 CSV Format uses Australian Eastern Standard Time (AEST), a fixed offset of UTC+10. AEMO applies no daylight savings adjustment at any point in the year.

IntervalPeriod Covered (AEST)Notes
100:00 – 00:30First interval of the day
200:30 – 01:00
2411:30 – 12:00Midday in AEST, which a Victorian clock reads as 13:00 in summer
4723:00 – 23:30
4823:30 – 24:00Last interval of the day

A 5-minute block numbers 288 intervals per day, from 00:00 to 00:05 up to 23:55 to 24:00. Convert the fixed timezone offset inside your own tool when you compare the data against a Time-of-Use (TOU) Tariff, because peak and off-peak windows follow the local clock.

Why the 300 Record Is Unpivoted

The 300 Record stores intervals in long format, one after another, with no column header on any of them. Position alone carries the time, so a shifted field moves energy silently to the wrong half hour.

  • Long format output: one row per interval, with the date, the time, and the NMI Suffix repeated on each row. This shape suits a Pivot Table.
  • Wide format output: one row per day per register, with one column per interval. This shape suits a Load Profile chart.
  • Raw 300 Records: neither shape. The row is unpivoted, and the register name lives on the parent 200 Record.

Our NEM12 CSV Spreadsheet Converter reshapes the 300 Records into either output. Our guide on how to open NEM12 data in a spreadsheet compares wide format and long format for analysis.

Try our NEM12 CSV Spreadsheet Converter Tool

The 400 Record — Interval Events

A 400 Record follows a 300 Record when part of that day differs from the day-level flag. Several 400 Records can follow a single 300 Record.

FieldField NameExample ValueNotes
1RecordIndicator400Always 400
2StartInterval12First interval number that this event covers, counted from 1
3EndInterval16Last interval number that this event covers, inclusive
4QualityMethodS51Quality Flag and Method Flag together, so S51 reads as Substituted by method 51
5ReasonCode53Numeric reason for the event
6ReasonDescription(optional)Free text, which the specification requires where ReasonCode is 0

The 400 Record replaces the day-level flag across the interval range it names. Apply the 300 Record flag to the whole day first. Then apply each 400 Record over the top of it.

Quality Flags in the NEM12 CSV Format

A Quality Flag records how the data provider obtained a value. The Estimated vs Actual distinction matters for a billing audit, because a substituted interval is not a measurement.

Quality FlagNameMeaningMethod Flag Required
AActualA metered read taken directly from the meterNo
EForward EstimateNo read was available, so an estimation method produced the valueYes
SSubstitutedA defined substitution method replaced the valueYes
FFinal SubstituteA substituted value that the market has confirmed as finalYes
NNull DataNo data exists for the interval, so treat the value as missing rather than as zeroNo
VVariableQuality varies within the day, so the 400 Records carry the detailPer interval

Some analysis and design tools reject a file that carries estimated or substituted intervals, and others accept the file and mark the gap. Check the requirements of your target tool before you upload, because those requirements differ between products and between versions. Our guide on how to import NEM12 data into solar design tools covers what several named tools expect.

Method Flags in the NEM12 CSV Format

A Method Flag states how a derived value was produced. The QualityMethod field concatenates the two codes, so S14 reads as Substituted by method 14. An actual read needs no method, so A stands alone.

Method FlagNameHow the Value Was Produced
11CheckA check meter at the same site supplied the value
14Like DayThe same interval on a comparable day supplied the value
15Average Like DayAn average of the same interval across several comparable days
51Retrospective SubstitutionA later substitution replaced the value once better data arrived
55Linear InterpolationInterpolation between the surrounding actual readings produced the value
56AgreedThe parties agreed the value, for example during a metering dispute
57Customer ReadingThe customer supplied the reading

The table above lists method flags that appear often in residential files. AEMO owns the complete list, so check any code against the current MDFF specification before you build logic around it.

The 900 Record — End of Data

The 900 Record is the last row in a NEM12 file. It carries the record indicator and nothing else, so the whole row reads 900.

  • No 900 Record: the file is truncated, and the final block has no terminator. Treat the last day as unverified.
  • A 900 Record before the end: two exports have been joined into one file. Split them, or read only the rows above the first 900 Record.
  • Rows after the 900 Record: the same joining problem, seen from the other side. Report the extra rows rather than discard them.

Common Non-Compliances in DNSP Portal Exports

AEMO wrote the NEM12 specification for settlement between market participants. A DNSP customer portal repackages the same data for download, and small departures from the specification are common in that repackaging.

Non-ComplianceWhere It Has Been ReportedEffect on Parsing
No 400 Record where per-interval overrides belongSeveral portal exportsThe day-level flag stands alone, so quality detail within the day is lost
A trailing comma at the end of a 300 RecordSeveral portal exportsA naive CSV reader adds an empty field, which moves the QualityMethod position
No UpdateDateTime field on a 300 RecordSeveral portal exportsThe specification requires the field, so a strict validator rejects the row
A blank Quality Flag on a 300 RecordSeveral portal exportsA strict validator rejects the row. A lenient parser can read the day as A and report the assumption
Mixed interval lengths inside one NMIExports that span a meter upgradeIntervalLength changes without a new 200 Record, which breaks a fixed count of 48 readings
Daylight savings applied to AEST timestampsSome retailer-sourced exportsOne interval duplicates in autumn and one disappears in spring, so day lengths vary
A date written as DD/MM/YYYY rather than YYYYMMDDSome retailer-sourced exportsAny parser that expects YYYYMMDD fails on the row
An empty field in place of a null readingSeveral portal exportsThe remaining readings on the row shift left, which misplaces energy in time

How to Parse a NEM12 File Defensively

Write the parser for the files that arrive, not only for the files that the specification describes. Report every deviation instead of correcting it in silence.

  1. Route each row by its leading record indicator before you read any other field.
  2. Hold the 200 Record context in memory. Attach the NMI, the NMI Suffix, the Unit of Measure, and the IntervalLength to every 300 Record below it.
  3. Count the readings on each 300 Record. Compare that count against the declared IntervalLength.
  4. If the two counts disagree, record the row as suspect and continue reading the file.
  5. Apply the day-level Quality Flag first. Then apply each 400 Record over the interval range it names.
  6. If a Quality Flag is blank, apply a documented default and log the substitution.
  7. Treat an N flag as missing data. Never add a null interval into a total as a zero.
  8. Trim a trailing empty field before you read the QualityMethod position.
  9. Keep every timestamp in AEST inside the parser. Convert to local time only for display.
  10. Return the list of deviations beside the parsed data, so the next reader can judge the file.

Never sum E1 and B1: E1 measures energy drawn from the grid, and B1 measures energy sent back to it. Adding the two registers produces a number with no physical meaning. Total each register separately, then compare the two totals.

For the spreadsheet traps, the corrupted identifiers, and the timezone mistakes that follow from all of this, see our companion guide on how to avoid NEM12 CSV data gotchas.

Read a NEM12 File Without Writing a Parser

Frequently Asked Questions

  • What is the NEM12 CSV Format? It is AEMO's semi-structured, non-tabular format for exchanging Interval Data from smart meters. One file mixes 100, 200, 300, 400, and 900 records rather than one uniform table.
  • What does the 100 Record contain? It carries file-level metadata: the version header, the creation timestamp, and the identifiers of the sending and receiving participants.
  • What does the 200 Record declare? It declares the NMI, the NMIConfiguration string, the NMI Suffix, the meter serial number, the Unit of Measure, and the IntervalLength for the rows beneath it.
  • What does a 300 Record hold? It holds one day of interval readings for a single register, followed by the day-level Quality Flag and any reason codes.
  • When does a 400 Record appear in a NEM12 file? It appears when part of a day differs from the day-level flag, and it overrides the Quality Flag and the Method Flag across the interval range it names.
  • What is the 900 Record for? It marks the end of the data and closes the file that the 100 Record opened. A file without one is truncated.
  • What is the 500 Record in NEM12? It is a business-to-business details record used in market settlement. It rarely appears in a customer portal download.
  • What does NMIConfiguration mean on a 200 Record? It lists every NMI Suffix present for that NMI as one concatenated string, such as E1B1Q1, so the available registers are visible at a glance.
  • What is the NMI Suffix in a NEM12 file? It is the two-character register code, such as E1, E2, or B1, that names one measurement point within a single NMI.
  • Which NEM12 register holds solar export? B1 is always the solar export register. E1, E2, and E3 are grid import registers.
  • Which register carries a Controlled Load? A Controlled Load on a Dedicated Circuit appears on a secondary import register, typically E2. It never appears on B1.
  • What does IntervalLength control in the NEM12 CSV Format? It declares the interval duration in minutes for the block, which fixes how many readings each 300 Record carries: 48 at 30 minutes, and 288 at 5 minutes.
  • Is NEM12 data always measured in kWh? Energy registers commonly declare kWh, but the Unit of Measure field also permits Wh, MWh, and the reactive unit kVARh. Read that field before you aggregate.
  • What do the NEM12 Quality Flags mean? They record Estimated vs Actual data. A marks a metered read, E, S, and F mark estimated or substituted values, and N marks missing data.
  • What is a Method Flag in NEM12? It is the numeric code appended to a Quality Flag that states how a derived value was produced, such as S14 for a like-day substitution.
  • Where does the QualityMethod field sit on a 300 Record? It follows the last interval reading, so it sits at position 51 in a 30-minute block and at position 291 in a 5-minute block.
  • Why is NEM12 always in AEST with no daylight savings? AEMO fixes the timezone offset at UTC+10 so that settlement stays consistent across the market. Convert to local time in your own tool.
  • Why is the NEM12 CSV Format called unpivoted? A 300 Record lists interval readings in ascending time order with no column header on any of them, so position alone carries the time.
  • Why does a DNSP portal export fail a strict NEM12 validator? Portal exports often show small departures from the specification, such as a trailing comma, a blank Quality Flag, or a missing UpdateDateTime field.
  • How do I read a NEM12 file without writing a parser? Use a NEM12-aware tool. Our NEM12 Smart Meter Data Analyzer and NEM12 CSV Spreadsheet Converter apply the record types and the register context for you.

Try our NEM12 Smart Meter Data Analyzer Tool

Glossary

100 Record
In the NEM12 Format, the header row that opens the file, carrying the format version, creation date, and participant details. Strict adherence to the NEM12 specification requires a single 100 Record.
200 Record
In the NEM12 Format, a Metadata row that declares the NMI, NMI Suffix, Meter Number, Unit of Measure, and interval length for the data rows beneath it.
300 Record
In the NEM12 Format, an interval data row carrying one day of readings for a single Meter Register plus a Quality Flag.
400 Record
In the NEM12 Format, an optional interval event row giving substitution or estimation reason codes for a range of intervals.
500 Record
In the NEM12 Format, an optional business-to-business details row used in market settlement. It rarely appears in a customer portal download.
900 Record
In the NEM12 Format, the end-of-data footer that must close the file and match the opening 100 Record.
30-Minute Interval Data
The standard half-hourly resolution at which Australian smart meters record electricity import and export. NEM12 CSV is typically supplied with 30 Minute Intervals.
AEMO
Australian Energy Market Operator — the body that administers the National Electricity Market and defines and maintains the NEM12 specification.
AEST
Australian Eastern Standard Time — the fixed timezone (UTC+10) used for all NEM12 timestamps, with no daylight savings adjustment.
B1
In the NEM12 Format, the Meter Register code for Solar Export — electricity generated on site and fed back to the grid, typically measured in kWh.
Check Digit
The 11th digit of a full NMI — calculated from the first ten digits to detect transcription errors; some DNSP portals require it. Also called a 'Checksum'.
Controlled Load
A separately metered circuit controlled by a signal from the DNSP. These circuits typically contain a single specific appliance or type of appliance - eg. an Electric Hot Water Service (and historically Air-Conditioners or Electric Slab Heating). They are typically billed at a discounted rate and often run only during off-peak hours. They appear on a separate Meter Register on an Electricity Bill. See also: Dedicated Circuit.
CSV
Comma-Separated Values — a plain text file in which each row is a record and fields are separated by commas.
Dedicated Circuit
The physical wiring and breaker serving a Controlled Load device, isolated so the DNSP can independently control supply. See also: Controlled Load.
DNSP
Distribution Network Service Provider - the company that owns and operates the physical poles and wires of the local electricity network, and usually provides the smart meter data portal. Not the same as your Electricity Retailer. See also: Electricity Retailer.
E1
In the NEM12 Format, the Meter Register code (or NMI Suffix) for the sole/main/primary mains grid import channel — electricity drawn from the network. Where there is No (Solar) Generation on site, this is the Total Consumption. Typically measured in kWh.
E2
In the NEM12 Format, the Meter Register code (or NMI Suffix) for a secondary mains grid import channel — typically controlled-load or off-peak consumption such as dedicated hot water. Present only where that tariff exists.
Electricity Retailer
The company that sells electricity to the consumer, issues the bill, and manages the account. Not the same as your DNSP (Distribution Network Service Provider) which owns and operates the network. See also: DNSP.
Estimated vs Actual
In the NEM12 CSV Format, the distinction between measured readings (Actual, flag A) and filled-in values (Substitute or Estimate), important for billing audits.
Hierarchy
In the NEM12 Format, a parent-child structure where a metadata row (200) defines the context for the data rows (300) that follow it.
Interval Data
Energy readings recorded at fixed time steps — typically every 30 minutes (but sometimes 5 or 15 minutes on newer meters) rather than as a single billing total. This allows charging different Tariffs at different times of day or days of the week. See also: Time-of-Use (TOU) Tariff.
IntervalLength
The field on a NEM12 200 Record that declares the interval duration in minutes for the 300 Records below it — commonly 30, and 5 or 15 on some meters.
K1
In the NEM12 Format, the NMI Suffix for Reactive Energy Export (kVARh). Appears most often in larger commercial but also in some residential NEM12 files but is never relevant for solar analysis or consumption analysis. See also: Reactive Energy, kVARh, NEM12, NMI.
kVARh
Kilovolt-Ampere Reactive Hour — the unit of Reactive Energy. Not the same as kWh. Reactive energy (kVARh) is measured by Q1 and K1 registers. It does not appear on residential electricity bills and is not used by solar analysis tools. See also: Reactive Energy.
kW
KiloWatt — the standard unit of (Electrical) Power: 1,000 Watts of Power used continuously for one hour is equivalent to 1000 Watt-Hours or 1 KiloWatt-Hour of Energy. Power is not an Amount of Energy but a Rate of Energy Transfer. See also: kWh.
kWh
KiloWatt-Hour — the standard unit of (Electrical) Energy: 1,000 Watts of Power used continuously for one hour is equivalent to 1000 Watt-Hours or 1 KiloWatt-Hour. NEM12 CSV records Electricity Use in kWh. See also: kW.
Load Profile
The pattern of a site's electricity use over time, derived from its interval data. The granularity or resolution of the Profile is the Interval Length (eg. 30 Minutes, Hours), and is typically based on averages for a longer period (eg. Months, Seasons).
Long Format
A table shape with one row per interval — keys such as date, time, and register repeated on every row, making the data easy to filter, sort, and pivot. See also: Pivot Table.
MDFF
Meter Data File Format — AEMO's file format specification for metering data, defining both the NEM12 interval structure and the NEM13 accumulation structure.
Method Flag
In the NEM12 Format, the numeric code appended to a Quality Flag that states how a derived value was produced — for example 14 for a like-day substitution.
Mixed-Record
In the NEM12 Format, a file that intermingles several different row types (100, 200, 300, 400) with different schemas, rather than one uniform record type per file.
MSATS
Market Settlement and Transfer Solution — the AEMO system that holds registry and metering data for the National Electricity Market.
NEM
The Australian National Electricity Market — the interconnected electricity grid covering Queensland, New South Wales, Victoria, South Australia, Tasmania and the ACT. Western Australia and the Northern Territory operate separate grids.
NEM12
The AEMO file format (version 12) for exchanging Interval Data from Smart Meters across the Australian National Electricity Market (NEM). NEM12 Format records the Amount of Energy per Time Interval in kWh. And also other types of data, using specific types of labelled rows or records (100, 200, 300, 400, 900) to record different types of data. This makes it a 'Semi-Structured' 'Non-Tabular' Format. See also: AEMO, NEM, kWh, Semi-Structured, Non-Tabular.
NEM12 CSV
A NEM12 File stored as comma-separated values — the form most DNSP and retailer portals distribute. See also: NEM12, CSV.
NEM12 CSV Format
See NEM12 CSV.
NEM12 Specification
AEMO's Meter Data File Format document defining every record type, field position, and validation rule for NEM12. See also: NEM12, AEMO.
NEM13
The AEMO Format for accumulation (non-interval) meter data — a total per read period rather than time-stamped intervals.
NMI
National Metering Identifier — the unique 10-digit identifier for an electricity connection point (11 with the Check Digit), permanent to the property. Note that the electricity connection point identified by the NMI, typically has multiple NMI Suffixes, and can have multiple Physical Meters. See also: Check Digit, NMI Suffix.
NMI Suffix
In the NEM12 Format, the short two-character code (E1, E2, E3, B1, B2, Q1, K1) identifying a specific Meter Register for recording electricity flows on the mains electricity connection identified by that NMI — also called the Meter Register or Register Code. See also: NMI, NEM12.
NMIConfiguration
The field on a NEM12 200 record listing every NMI Suffix present for the meter (e.g. "E1B1") — the quickest way to see which channels a file carries. See also: NMI, NMI Suffix.
Non-Tabular
Data that does not fit a single consistent grid — in NEM12's case because of its semi-structure, hierarchy and mixed-record layout.
Pivot Table
A spreadsheet feature that groups a long-format table by chosen keys and aggregates a numeric column (sum, average, minimum).
Q1
In the NEM12 Format, the NMI Suffix for Reactive Energy Import (kVARh). Appears in some residential NEM12 files but is never relevant for solar analysis or consumption analysis. See also: Reactive Energy, kVARh, NEM12, NMI.
Quality Flag
In the NEM12 Format, a single-letter code on each interval reading showing how the value was obtained — e.g. A (Actual), E (Estimated), S (Substituted), F (Final Substitute). See also: NEM12.
QualityMethod
The NEM12 field that concatenates the Quality Flag and the Method Flag into one code — for example S51, which reads as Substituted by method 51.
Reactive Energy
A property of AC electrical circuits related to the phase relationship between voltage and current. Measured in kVARh (not kWh). Recorded in Q1 (import) and K1 (export) registers. Not charged on residential electricity bills in Australia; not used by solar design tools or energy monitoring portals. See also: kVARh.
ReasonCode
In the NEM12 Format, the numeric code that states why a value was estimated or substituted. The specification requires a text description where the code is 0.
Semi-Structured
A data format that follows strict syntactic rules (e.g. comma separation, defined record codes) but does not enforce a consistent column schema across all rows. NEM12 is a Semi-Structured Format. See also: NEM12.
Smart Meter Data
Electricity import and export readings recorded by a digital interval meter at regular intervals. In Australia, typically supplied in NEM12 CSV Format with 30 Minute Intervals. See also: NEM12 CSV.
Tabular
Data arranged as a single grid — one header row and consistent columns, where every row follows the same schema. NEM12 is not stored this way; rather it is 'Semi-Structured' and 'Non-Tabular'. See also: Semi-Structured, Non-Tabular.
Time-of-Use (TOU) Tariff
A tariff with different prices at different times of day or days of the week (Peak, Shoulder, Off-Peak).
Timezone Offset
The fixed difference from UTC applied to NEM12 timestamps — always +10 hours (AEST).
Unit of Measure
In the NEM12 Format, the energy unit declared on the 200 Record — commonly kWh, but also Wh, MWh, and reactive units such as kVArh. See also: NEM12, kWh, kVARh.
Wide Format
A table shape with one row per day per Meter Register and one column per Time Interval — good for charting a Load Profile. See also: Load Profile.

Try our NEM12 Smart Meter Data Analyzer Tool