CRS / DAC2 reporting walkthrough
The full path from classification to submission.
Read the guide →The single most expensive mistake in automatic exchange is resending a whole population to fix one record. The schema was built to avoid exactly that, and the mechanism turns entirely on two identifiers.
An exchange message carries many independent records. Receiving systems store them individually and forward them individually, so a defect in one account report does not invalidate the rest. The correction mechanism reflects that: it updates the affected record and leaves everything else in place.
Resubmitting the full population with fresh identifiers does not replace the earlier submission. It creates a second, parallel population that the receiving authority now holds alongside the first, with no link between them. Unwinding that is considerably more work than the original correction would have been.
| Identifier | Scope of uniqueness | Purpose |
|---|---|---|
| Message reference | Every message ever sent by the filer to that jurisdiction. | Identifies the transmission and anchors the message being corrected. |
| Document reference | Every record ever created by the filer, permanently — not per file, not per period. | Identifies the individual record so a later correction can point at it. |
Both are allocated once and never reused. The practical consequence is that identifier allocation belongs to a central service that persists across reporting periods, not to the process that builds a file. Regenerating a file from source data must reproduce the same document references for the same records, or every correction path is lost.
The document type indicator on each record states what the record is doing. Four states matter in practice:
A single message may carry corrections and deletions together, but a message that carries them must not also introduce new data. Mixing the two is one of the more common file-level rejections.
| Situation | Action |
|---|---|
| A reported figure or identity field was wrong | Correction, pointing at the original record. |
| An account was reported that was never reportable | Deletion. Correcting it to a nil value leaves a record asserting the account was in scope. |
| A reportable account was omitted | New data in a subsequent message, with a fresh document reference. |
| The holder’s residence jurisdiction was wrong | Delete the record sent to the wrong jurisdiction, and send new data to the correct one. A correction cannot move a record between jurisdictions. |
| The whole submission went to the wrong period | Delete the population and resubmit against the correct reporting period. Confirm the approach with the authority first. |
A correction is itself a record with its own document reference, so a second correction points at the first correction rather than at the original. The chain has to be followed accurately; pointing a second correction back at the original leaves the receiving system holding two competing replacements for the same record. Retain the chain, not just the current state, because the authority sees the sequence.
Primary instruments only. Each is named in full so the reference remains traceable even if a link moves.
REGREP is an independent software provider. This record explains a reporting framework in plain language and is not legal, tax or regulatory advice. Confirm scope, thresholds and submission dates with your competent authority before you file.
More on this framework, and the module that produces the filing.
The full path from classification to submission.
Read the guide →The same correction mechanics, with amendments and voids distinguished.
Read the guide →Persistent identifier allocation and validated correction messages.
See the module →The module allocates and persists document references against your source records, so a correction resolves instead of duplicating.