33 codes that cover most of what an originator sees. Each one carries the decision: retry or stop, how long the receiving institution has to send it, what the guidance rests on, and when it was last checked.
On a rail fact, every detail line names the section or instrument it rests on and whether that is a rule, a law, operator guidance, or observed practice.
Not yet covered: these 33 values belong to the customer to institution leg, not to the interbank leg. The authority publishes them as guidance for the payment instruction a corporate or government customer sends its own institution, says that accepting such instructions is proprietary and at each institution's discretion, and notes that an institution may offer alternative reason codes; the interbank reject code values. Regulation 6.3(a)(ii) obliges a valid and applicable reason code on a rejected clearing request and Regulation 17.8(b)(i) obliges one on a rejected mandate payment initiation request, and neither lists a value. Both point at the NPP Procedures, which are available to members and direct affiliates only; the return reason values a pacs.004 may carry, which sit in NPP Procedures Volumes 3 and 9; mandate status reason code values, which no public AP+ document lists; Confirmation of Payee reason code values, which sit in NPP Procedures Volume 12 and on the developer portal; which values a given Australian institution actually uses, and with what meanings. One participant publishes its own NPP return and reversal code list of about 50 values, and on five shared values it disagrees with the authority's list; those disagreements are in corpus/conflicts.json and are not resolved here; the four status code values ACTC, ACSC, RJCT and PART are not reason codes and are not drafted here as records. They are described in the au-npp messages fact and in au-npp:rule.messages-four-status-code-values-on-the-initiation-leg.