SWIFT UETR validation testing checks that a Unique End-to-end Transaction Reference (UETR) is correctly formed, present where required and carried consistently through the payment messages and systems in scope. It helps teams detect malformed identifiers, accidental changes during message transformation and incorrect handling of a reference used to identify a payment across its processing journey.
What a UETR identifies
A UETR is a 36-character identifier in UUID version 4 format. The initiating party creates it for a payment, and it is intended to remain associated with that payment as messages pass between institutions. In SWIFT FIN MT103 messages, it is carried in field 121. In ISO 20022 payment messages, it is represented by the UETR element within PmtId.
The UETR supports payment identification and tracking. It is distinct from a bank's internal transaction identifier and from other payment references, which may have separate purposes and rules. A payment platform may store all of these values, so tests should assert the correct field mapping rather than treating references as interchangeable.
What validation testing checks
Validation has both format and workflow aspects. At message level, check that the UETR is present when the applicable message and business rules require it, follows the expected UUID structure, and contains valid hexadecimal characters and separators. Since a UETR is a UUID version 4, validation rules should also check the version and variant bits where the implementation validates them.
At integration level, compare the value at each relevant boundary: payment initiation, message creation, translation, routing, status handling and downstream storage. For a single payment, the UETR should remain consistent through the applicable payment chain. A mapping defect can produce valid-looking messages while assigning a different UETR downstream, so checking each message's syntax alone is insufficient.
Tests should cover accepted messages as well as rejection or exception handling for missing, truncated, malformed and incorrectly mapped values. Confirm the expected outcome for each case, such as schema or business-rule rejection, a repair queue entry, or an application error. The correct outcome depends on the receiving system and message rules. Also check that errors do not silently replace the UETR or create a second payment.
A practical test example
Assume a test payment is initiated with UETR 550e8400-e29b-41d4-a716-446655440000. Follow it through the message generated by the payment service and any translated or forwarded message in the test flow.
A basic test can assert that:
- the outgoing message contains the expected UETR in the appropriate field;
- the reference has the expected UUID version 4 structure;
- each downstream representation for the same payment carries the same value;
- a deliberately malformed value is rejected or routed according to the configured rules.
For example, remove a hexadecimal character from the test value and submit the message through the validation boundary. Check the response, any recorded validation error and whether payment processing stopped at the intended point. Then restore the valid value and confirm that the payment proceeds through the expected test flow. This combines message validation with integration testing.
Test data and verification
Use controlled test data and record the expected UETR alongside the payment's other identifiers. Keep test cases deterministic where exact-value comparisons are needed, while ensuring that separate test payments do not accidentally reuse an identifier if the system applies uniqueness checks. Avoid copying production payment references into test environments unless approved data controls permit it.
When a test fails, inspect the raw messages at the boundaries as well as application logs and stored payment records. This helps distinguish a generator defect from a mapping error, message transformation issue or environment configuration difference. Record the message type, field or element, expected value, actual value and processing result as test evidence. These checks form part of SWIFT payment testing and ISO 20022 message testing.
Frequently asked questions
Is a UETR the same as an EndToEndId?
No. A UETR is a UUID version 4 reference used to identify a payment across its processing chain. An EndToEndId is a separate payment reference with its own purpose and handling rules, so systems should map and validate the two fields independently.
Does a UETR authenticate or authorise a payment?
No. A UETR identifies a payment; it does not prove the sender's identity or authorise a transaction. Authentication, authorisation and message integrity controls must be tested separately.
Should a retransmitted payment message use the same UETR?
A retransmission of the same payment should retain the payment's UETR so that the reference continues to identify that transaction. A genuinely new payment should have its own UETR. Test the distinction against the system's retry and duplicate-handling rules.
