X12 834 DTP Segment Guide: Fields, Format, and Testing Gotchas
Everything else in an 834 member loop can be perfect, but if DTP carries the wrong date, a member shows up covered on a day they aren't — or gets bounced from an eligibility check on a day they should still be active.
DTP (Date or Time or Period) is a repeating segment inside the 834 member loop that stamps a specific date onto a specific meaning, using a qualifier code to say which date it is. The two occurrences testers see most often carry the day coverage begins and the day it ends, but the same segment shape is reused for other dates in the loop as well, so the qualifier in DTP01 is what actually tells a parser what it's looking at.
The elements that actually matter in practice
Example
A synthetic DTP marking coverage as beginning on 2026-09-01: DTP01=348 identifies this as a coverage-begins date, and DTP02=D8 means DTP03 is a single eight-digit calendar date.
Where this trips people up
Test fixtures tend to include exactly one DTP per member — usually just the effective date — because that's enough to make a happy-path enrollment look complete. Real files routinely carry both a coverage-begins and a coverage-ends DTP in the same loop, sometimes with the termination date sitting in the future as advance notice of an upcoming drop. A parser that was only ever tested against a single DTP occurrence can end up overwriting the effective date with the termination date, or vice versa, if it isn't keying strictly off DTP01. Build synthetic files with multiple DTP segments per member and mixed qualifier ordering, not just one date in one position.