Originally based on our article NDIS support item numbers explained: what every part of 01_011_0107_1_1 means on rostery.com.au. This version is rewritten for the people who set up price lists, build claim exports or look after the billing side of an NDIS provider's systems.
Every NDIS claim line carries a support item number, and most of the claiming problems we see start with that one field. The wrong time-of-day item, a travel line on a number that doesn't allow travel, an item the provider isn't registered for, a price copied from last year's list. None of these are hard to catch. They just need to be caught before the bulk upload rather than after the NDIA sends the file back.
This post treats the item number as data. We'll split it into its fields, look at what changed in the 2026-27 Support Catalogue, write a small Python sketch that picks the right time band, and finish with five checks to run on every line before you build the claim file.
General information only, not claiming or legal advice. The 2026-27 Pricing Schedule, the NDIS Support Catalogue and the NDIA's current guidance always come first.
Where the numbers come from
Three documents matter, and it helps to know which does what.
- The NDIS Pricing Schedule 2026-27 sets the maximum amounts. Since 24 September 2026 it has the force of law through the NDIS (Pricing Arrangements) Determination 2026, and it lists 611 items with printed prices.
- The NDIS Support Catalogue 2026-27 v1.1 is the spreadsheet you actually load. It has 976 current items and 41 legacy items, each with its unit, national, remote and very remote limits, start and end dates, and flags for which claim types are allowed.
- The Pricing Arrangements and Price Limits 2025-26 v1.1 is still the NDIA's claiming guidance. The NDIA says it will publish updated pricing and claiming guidance documents shortly, so check for a newer version before you rely on any rule below.
If you're building anything, load the catalogue rather than copying prices from a PDF. You get dates and flags, not just dollars.
The fields
An item number such as 01_011_0107_1_1 splits on the underscore into five parts. Since 2026-27, many items also carry a sixth.
A few things trip people up when they store these.
Keep it as text. The sequence and registration group have leading zeros (0107), and the sequence isn't a fixed width. In the 2026-27 catalogue, 270 items use a 9-digit sequence (mostly assistive technology) and 9 use 4 digits. A spreadsheet that turns 0107 into 107, or a column typed as a number, will quietly break matching. The NDIA's bulk upload guide allows up to 60 characters in the SupportNumber field, so don't truncate either.
The support purpose is the last base digit. In the current catalogue that's 243 Core items, 238 Capital and 494 Capacity Building. One further item, the bereavement support, has no number at all, so your loader needs to cope with a blank.
The category and the purpose don't always line up the way you'd expect. Fourteen therapy and early childhood items appear in category 01 (Assistance with Daily Life) with a purpose of 3 (Capacity Building). 01_665_0128_1_3 and 15_622_0128_1_3 are both speech pathology direct service at $193.99 an hour. They draw on different budgets, so matching on the description alone will pick the wrong one half the time.
Units vary. Of the 976 current items, 602 are claimed by the hour, 350 per item (each), 11 per year, 6 per week, 5 per day and 2 per month. Quantity validation has to follow the unit.
The claim-type suffix
This is the biggest structural change in 2026-27. Therapy and other professional items now have a separate number for each kind of claim:
| Suffix | Meaning | Price |
|---|---|---|
| (none) | Direct service | the session price |
_CA |
Short-notice cancellation | same as the session |
_NF |
Non-face-to-face work | same as the session |
_PT |
Provider travel | half the session price |
_RR |
NDIA requested reports | same as the session |
_TH |
Telehealth | same as the session |
There are 335 of these suffix items across 67 sets, including three _CA2 and _NF2 variants for two specific items. We checked every _PT item in the catalogue: each is exactly half its direct service price, so speech pathology travel is $97.00 an hour against a $193.99 session.
Items without a suffix, such as core daily-living supports, still use the older approach. The number stays the same and the bulk CSV's ClaimType column says what kind of claim it is: blank for direct service, or CANC, REPW, TRAN, NF2F, THLT or IRSS. Cancellations also need a CancellationReason code. Whether a claim type is allowed against a base item is in the catalogue's flag columns. If the claim type and the item don't agree, expect rejection C29, "This support item is not allowed for this claim type selection".
A sensible pattern is to validate the shape with one expression and then look the number up in the catalogue for everything else:
import re
ITEM = re.compile(
r"^(?P<category>\d{2})_(?P<sequence>\d{3,9})_(?P<reg_group>\d{4})"
r"_(?P<outcome>[1-8])_(?P<purpose>[1-3])"
r"(?:_(?P<suffix>CA2|NF2|CA|NF|PT|RR|TH))?$"
)
def parse(number: str) -> dict:
m = ITEM.match(number.strip())
if not m:
raise ValueError(f"not an item number: {number!r}")
return m.groupdict()
parse("15_622_0128_1_3_PT")
# {'category': '15', 'sequence': '622', 'reg_group': '0128',
# 'outcome': '1', 'purpose': '3', 'suffix': 'PT'}
The pattern only tells you the number is well formed. Whether it exists, what it costs and what it allows all come from the catalogue row.
Picking the time-of-day item
For daily-living supports, the day and time decide the number. Self-care has a weekday daytime item (01_011_0107_1_1, $73.58 an hour), evening (01_015, $81.07), night (01_002, $82.57), Saturday (01_013, $103.54), Sunday (01_014, $133.50), public holiday (01_012, $163.46) and a sleepover item (01_010, $311.79 each). Those are national limits.
Part 4 of the Pricing Schedule defines the bands. For supports other than nursing, weekday daytime starts at or after 6 am and ends at or before 8 pm; evening starts at or after 8 pm and finishes by midnight; night crosses midnight or starts before 6 am. Saturday, Sunday and public holiday supports run from midnight to midnight. Part 2 then adds the rule that matters most for code: where a support crosses times or days and one worker delivers all of it, the higher amount applies to the whole support.
That makes the logic simpler than it looks. Work out every band the shift touches and take the most expensive.
from datetime import datetime, time, timedelta
SELF_CARE = { # national limits, Pricing Schedule 2026-27
"01_011_0107_1_1": 73.58, # weekday daytime
"01_015_0107_1_1": 81.07, # weekday evening
"01_002_0107_1_1": 82.57, # weekday night
"01_013_0107_1_1": 103.54, # Saturday
"01_014_0107_1_1": 133.50, # Sunday
"01_012_0107_1_1": 163.46, # public holiday
}
def band_at(t: datetime, holidays: set) -> str:
if t.date() in holidays:
return "01_012_0107_1_1"
if t.weekday() == 5:
return "01_013_0107_1_1"
if t.weekday() == 6:
return "01_014_0107_1_1"
if t.time() < time(6):
return "01_002_0107_1_1"
if t.time() < time(20):
return "01_011_0107_1_1"
return "01_015_0107_1_1"
def item_for(start: datetime, end: datetime, holidays: set) -> str:
"""One worker, one continuous support, not a sleepover, not nursing."""
touched, t = set(), start
while t < end:
touched.add(band_at(t, holidays))
t += timedelta(minutes=15)
return max(touched, key=SELF_CARE.get)
A weekday shift from 6 pm to 10 pm touches daytime and evening, so the whole four hours go on the evening item. A shift from 10 pm Friday to 2 am Saturday touches evening and Saturday, so it's all Saturday. Three caveats before you lift this into production:
-
holidayshas to hold the public holidays for the state or region where the support is delivered, not where your office is. - Sleepovers are a separate definition (eight hours or more across midnight, worker allowed to sleep) and a separate item. If more than two hours of active support happen overnight, the third and later hours are claimed at Saturday rates on weekdays.
- Nursing uses different times. In 2026-27, nursing weekday daytime is 6 am to 6 pm.
If you want to sanity-check the output without writing anything, our free NDIS shift price calculator does the same job for a single shift: pick the support, day and times and it shows the band and the most you can claim.
Location changes the price, not the number
The same number covers city and bush. What changes is which of the three limits applies, and that depends on where the support is delivered, not the participant's home address. MM 1 to 5 locations use the national limit, MM 6 the remote limit and MM 7 the very remote limit, which are generally 40% and 50% higher. Part 3 of the Pricing Schedule also reclassifies some towns surrounded by remote areas; Broken Hill and Kalgoorlie, for example, are treated as remote (MM 6). Store all three limits per item and choose at pricing time.
Five checks before the claim file
Here's the order we'd run them in, line by line, before anything goes into the bulk CSV.
- Valid on the date. Look the number up in the catalogue version that was in force on the support date, using its start and end dates. A support from June claimed against a 2026-27 item, or a legacy item claimed after it ended, comes back as C16, "The support is not available for the dates entered".
- Right band. Recalculate the time-of-day item from the actual start and finish times, not the rostered ones.
-
Right claim type. For suffix items, the suffix must match the work. For base items, the
ClaimTypemust be one the catalogue flags allow. Otherwise, C29. - Registered for it. The registration group in the number has to be one your organisation holds. If it isn't, the NDIA returns C15, "Provider is not registered for this support item". Watch supported independent living: the same SIL supports are listed under group 0115 and the new group 0138 at identical prices, so the number you claim has to match your registration.
-
Within the limit. The unit price must be at or below the limit for the location. The bulk guide lists V31, "The unit price claimed is above the NDIS price limit", and it also notes that where an amount above the catalogue price gets through, only the limit is paid and the line is marked
Capped = YESin the reconciliation file. Either way, you don't get the difference.
One more thing sits outside the item number but still stops claims: for participants on plans in the NDIA's newer system, you need to be one of their "my providers" for the support. Our PACE glossary entry explains what changed.
If you'd like a step-by-step version of the upload itself, our earlier dev.to post sets out a pre-upload check workflow for NDIS bulk payment requests with all 16 columns.
Free tools for the lookup step
You don't have to build the lookup to use it. Our free NDIS Price Guide 2026-27 searches all 976 current items, and each item has its own page with the national, remote and very remote amounts, the unit, and whether provider travel, short-notice cancellations and non-face-to-face delivery can be claimed. It runs in the browser and nothing you type is sent anywhere.
Once you have a file, the NDIS claim file checker checks a bulk payment CSV against the 16-column format and every item and price against the 2026-27 catalogue, also in the browser, so the file never leaves your device.
How we handle it in Rostery
For anyone wondering how this works in a full system: in Rostery, our team loads each new Support Catalogue, compares it with the last one and publishes it with its effective date, and prices are looked up by the date of the support. The right band item is chosen for every shift when it's rostered and invoiced. The claim file is built in the NDIA's 16-column format, and if any line fails its checks the whole file is refused with a list of what to fix. Rostery doesn't connect to the NDIA portal, so your team still uploads the file.
Whatever you use, the pattern is the same: parse, look up by date, derive the band from real times, check the claim type and registration, then check the price.
Sources: NDIS Pricing Schedule 2026-27 (effective 24 September 2026), Parts 1 to 4; NDIS (Pricing Arrangements) Determination 2026; NDIS Support Catalogue 2026-27 v1.1; NDIS Pricing Arrangements and Price Limits 2025-26 v1.1; NDIA, Bulk payment requests guide (December 2025). Rostery feature and tool pages read 3 November 2026.
Written by the Rostery team in Sydney. Rostery makes rostering, care and billing software for NDIS and aged care providers.




Top comments (0)