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 Type | Name | Quantity Per File | Purpose |
|---|---|---|---|
| 100 | Header Record | One, as the first row | File-level metadata: format version, creation timestamp, and participant identifiers |
| 200 | NMI Data Details Record | One per NMI and NMI Suffix | Names the NMI, the register, the Unit of Measure, and the IntervalLength for the rows that follow |
| 300 | Interval Data Record | One per day, per register | One full day of interval readings, plus the day-level Quality Flag |
| 400 | Interval Event Record | Zero or more after a 300 Record | Per-interval quality and method overrides for part of the preceding day |
| 500 | B2B Details Record | Rare in customer downloads | Business-to-business settlement data, which customer analysis does not need |
| 900 | End of Data Record | One, as the last row | Closes the file that the 100 Record opened, and carries no data fields |
The blocking order inside a compliant file is fixed.
- One 100 Record opens the file.
- One 200 Record opens a block for a single NMI and NMI Suffix.
- One or more 300 Records follow, one per day.
- Zero or more 400 Records follow any 300 Record that needs an override.
- Steps 2 to 4 repeat for each further NMI and NMI Suffix.
- 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.
| Field | Field Name | Example Value | Notes |
|---|---|---|---|
| 1 | RecordIndicator | 100 | Always 100 |
| 2 | VersionHeader | NEM12 | NEM12 for interval data. A file of accumulation data carries NEM13 here instead |
| 3 | DateTime | 202401150930 | File creation timestamp, in YYYYMMDDhhmm form |
| 4 | FromParticipant | POWERCOR | Participant identifier of the party that generated the file |
| 5 | ToParticipant | CUSTOMER | Intended 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.
| Field | Field Name | Example Value | Notes |
|---|---|---|---|
| 1 | RecordIndicator | 200 | Always 200 |
| 2 | NMI | 6200000000 | The 10-character National Metering Identifier, written without the check digit |
| 3 | NMIConfiguration | E1B1Q1 | Every NMI Suffix present for this NMI, concatenated with no delimiter |
| 4 | RegisterID | 1 | Internal register identifier, which often matches the digit in the NMI Suffix |
| 5 | NMISuffix | E1 | The register that this block describes: E1, E2, B1, Q1, K1, and so on |
| 6 | MDMDataStreamIdentifier | N1 | Internal stream identifier, which customer analysis does not need |
| 7 | MeterSerialNumber | METSER123 | Serial number of the physical meter at the premises |
| 8 | UOM | kWh | Unit of Measure for every reading below: commonly kWh, and kVARh for Q1 and K1 |
| 9 | IntervalLength | 30 | Interval duration in minutes: commonly 30, and 5 or 15 on some meters |
| 10 | NextScheduledReadDate | 20240301 | Date 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.
| NMIConfiguration | What the String Declares |
|---|---|
| E1 | Grid import only, with no solar export and no Controlled Load |
| E1E2 | Grid import plus a second import register, typically a Controlled Load such as hot water |
| E1B1 | Grid import plus solar export, which is the common pattern for a solar household |
| E1B1E2 | Grid import, solar export, and a Controlled Load register |
| E1B1Q1 | Grid import, solar export, and Reactive Energy import. Q1 is not used in solar analysis |
| E1Q1B1K1 | All 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.
| Field | Field Name | Example Value | Notes |
|---|---|---|---|
| 1 | RecordIndicator | 300 | Always 300 |
| 2 | IntervalDate | 20240115 | The date of the readings, in YYYYMMDD form |
| 3 to 50 | IntervalValues | 0.123,0.245,…,0.187 | 48 values for 30-minute data, in ascending time order. A 5-minute block carries 288 values |
| 51 | QualityMethod | A | The day-level Quality Flag, plus the Method Flag where the specification requires one |
| 52 | ReasonCode | (optional) | Numeric reason for a substituted or estimated day |
| 53 | ReasonDescription | (optional) | Free text, which the specification requires where ReasonCode is 0 |
| 54 | UpdateDateTime | 20240115093000 | When the data provider last updated this row, in YYYYMMDDhhmmss form |
| 55 | MSATSLoadDateTime | (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.
| Interval | Period Covered (AEST) | Notes |
|---|---|---|
| 1 | 00:00 – 00:30 | First interval of the day |
| 2 | 00:30 – 01:00 | |
| 24 | 11:30 – 12:00 | Midday in AEST, which a Victorian clock reads as 13:00 in summer |
| 47 | 23:00 – 23:30 | |
| 48 | 23:30 – 24:00 | Last 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.
| Field | Field Name | Example Value | Notes |
|---|---|---|---|
| 1 | RecordIndicator | 400 | Always 400 |
| 2 | StartInterval | 12 | First interval number that this event covers, counted from 1 |
| 3 | EndInterval | 16 | Last interval number that this event covers, inclusive |
| 4 | QualityMethod | S51 | Quality Flag and Method Flag together, so S51 reads as Substituted by method 51 |
| 5 | ReasonCode | 53 | Numeric reason for the event |
| 6 | ReasonDescription | (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 Flag | Name | Meaning | Method Flag Required |
|---|---|---|---|
| A | Actual | A metered read taken directly from the meter | No |
| E | Forward Estimate | No read was available, so an estimation method produced the value | Yes |
| S | Substituted | A defined substitution method replaced the value | Yes |
| F | Final Substitute | A substituted value that the market has confirmed as final | Yes |
| N | Null Data | No data exists for the interval, so treat the value as missing rather than as zero | No |
| V | Variable | Quality varies within the day, so the 400 Records carry the detail | Per 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 Flag | Name | How the Value Was Produced |
|---|---|---|
| 11 | Check | A check meter at the same site supplied the value |
| 14 | Like Day | The same interval on a comparable day supplied the value |
| 15 | Average Like Day | An average of the same interval across several comparable days |
| 51 | Retrospective Substitution | A later substitution replaced the value once better data arrived |
| 55 | Linear Interpolation | Interpolation between the surrounding actual readings produced the value |
| 56 | Agreed | The parties agreed the value, for example during a metering dispute |
| 57 | Customer Reading | The 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-Compliance | Where It Has Been Reported | Effect on Parsing |
|---|---|---|
| No 400 Record where per-interval overrides belong | Several portal exports | The day-level flag stands alone, so quality detail within the day is lost |
| A trailing comma at the end of a 300 Record | Several portal exports | A naive CSV reader adds an empty field, which moves the QualityMethod position |
| No UpdateDateTime field on a 300 Record | Several portal exports | The specification requires the field, so a strict validator rejects the row |
| A blank Quality Flag on a 300 Record | Several portal exports | A strict validator rejects the row. A lenient parser can read the day as A and report the assumption |
| Mixed interval lengths inside one NMI | Exports that span a meter upgrade | IntervalLength changes without a new 200 Record, which breaks a fixed count of 48 readings |
| Daylight savings applied to AEST timestamps | Some retailer-sourced exports | One interval duplicates in autumn and one disappears in spring, so day lengths vary |
| A date written as DD/MM/YYYY rather than YYYYMMDD | Some retailer-sourced exports | Any parser that expects YYYYMMDD fails on the row |
| An empty field in place of a null reading | Several portal exports | The 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.
- Route each row by its leading record indicator before you read any other field.
- 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.
- Count the readings on each 300 Record. Compare that count against the declared IntervalLength.
- If the two counts disagree, record the row as suspect and continue reading the file.
- Apply the day-level Quality Flag first. Then apply each 400 Record over the interval range it names.
- If a Quality Flag is blank, apply a documented default and log the substitution.
- Treat an N flag as missing data. Never add a null interval into a total as a zero.
- Trim a trailing empty field before you read the QualityMethod position.
- Keep every timestamp in AEST inside the parser. Convert to local time only for display.
- 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.