Fictional T-71: corrected data and permission to execute have separate histories. P-4 is an illustrative policy, not a legal rule.
Engineering comparison · Reviewed 19 October 2026
A Travel Rule exception queue needs more than a retry button. Missing identity information, a transport timeout and a disputed beneficiary can all stop the same transfer, but they require different evidence and different owners. Choose the workflow by the unresolved question, then make the next permitted action explicit. A repaired message must never acquire transfer authority merely because its validation errors disappeared.
This comparison covers five proposed patterns: local validation and repair, a counterparty information hold, bounded transport retry, analyst review and governed rejection or return. They can coexist in one CASP system. They are not five interchangeable interpretations of the law, and none independently proves that a transfer may proceed. The comparison criteria are control boundaries and reconstructable decisions, not measured supplier performance.
Use this compact matrix as a routing specification. Each row identifies a different unresolved question. The sections that follow explain its operating limits and proposed evidence requirements.
Local validation and repair: trigger is a known payload defect; hold before dispatch; retry only the corrected message revision; schema owner maintains rules; exit requires validation plus the separate transfer checks; preserve original input and repair lineage.
Counterparty information hold: trigger is missing information that another party must supply; hold the affected action; send bounded information requests; compliance operations owns follow-up; exit requires a reviewed response and current authorization; preserve request, response and expiry decisions.
Bounded transport retry: trigger is an unavailable or uncertain messaging route; retain the existing transfer restriction; retry delivery within the declared budget; integration operations owns recovery; exit requires a reconciled delivery result and separate authorization; preserve attempts and acknowledgements.
Analyst review: trigger is conflicting information or an unresolved policy question; hold the affected action; avoid automatic resubmission as a substitute for judgment; an authorized reviewer owns the decision; exit requires scoped approval against current evidence; preserve rationale and authority.
Governed rejection or return: trigger is a policy decision that the attempted path cannot continue; stop ordinary retries; reconcile any assets already received; the designated control owner approves the disposition; exit requires confirmed terminal handling; preserve reason and any separately authorized return.
The matrix's hold boundary refers to the action under the CASP's control. An incoming blockchain transfer may already exist before information checks finish. Record that asset state separately from permission to make assets available, submit an outgoing transaction or initiate a return.
For EU operations, start with Regulation (EU) 2023/1113 on transfer information and the applicable EBA Travel Rule Guidelines. The EBA identifies procedures for detecting missing or incomplete information and managing affected transfers. Its final guidance includes risk-based handling and rejection or return scenarios. These sources do not turn every technical failure into the same operational response.
The responsible policy owner should map the operator's role, direction of transfer, jurisdiction and applicable requirements to permitted actions. An originator CASP, beneficiary CASP and intermediary do not occupy identical positions. Keep that mapping versioned. A product setting labeled compliant cannot establish which obligations the actual workflow implements, and an internal exception label cannot waive them.
This article proposes engineering controls rather than a universal release rule, deadline or reporting threshold. Self-hosted-address handling needs its own applicable checks. Lack of a messaging endpoint should not silently classify an address or select an exemption. Record the policy decision that makes a particular route applicable before evaluating its implementation.
Choose local repair when the defect is understood and its correction can be made from an authorized source. Examples include an omitted field that already exists in the approved customer record or an encoding problem with a declared transformation. Keep the transfer from advancing while the defect remains unresolved. Validate the corrected version against the applicable payload and policy requirements before it reaches the next control. Repair must preserve meaning. Transliteration, truncation or merging name fields can change the identity a downstream party sees. Retain the source value and transformation revision, and escalate ambiguity instead of guessing. A syntactically valid IVMS101 payload does not establish that every identity fact is accurate or that the intended recipient is appropriate.
The useful evidence object is a revision relationship: input M-1 failed a named check; M-2 changed identified fields using a stated source. Validation then produced a declared result. These identifiers describe a proposed example. A reviewer should see which checks actually ran, including checks that remain unresolved after the repair.
Use a counterparty hold when local records cannot supply the missing information and an authenticated external response is required. Create a request linked to the affected transfer and the exact information gap. Assign an owner who can inspect the response and a follow-up rule derived from the governing policy. A background queue with no owner or expiry action is an unresolved case, even when its messages are delivered successfully.
Keep a response distinct from an accepted answer. A counterparty may return an attachment that does not address the missing field, refers to another transfer or conflicts with retained information. Bind the response to the request and preserve the review result. Resume only through the applicable authorization path using the current evidence revision.
Counterparty nonresponse also needs a defined outcome. Record when the request was sent, which follow-up occurred and who selected the permitted next action. Do not invent a common timeout for every corridor. Customer-facing text can explain that additional information is needed without promising automatic release when a timer expires.
Choose transport retry when the unresolved issue is message delivery rather than missing content. A timeout may leave uncertainty about whether the receiver processed the request. Preserve the original business transfer identity while giving each delivery attempt a separate identifier. Consult the provider's actual reconciliation facilities before deciding whether to resend an unchanged request or seek a status result. TRISA describes a concrete integration failure in its Envoy Webhook Guide:
If the webhook is unavailable, Envoy will return service unavailable to the counterparty.
That sentence describes Envoy behavior. It does not establish another provider's retry contract or authorize an on-chain transaction. Define a bounded retry budget, backoff behavior and escalation owner for the deployed route. Keep exhaustion visible as an unresolved delivery condition rather than converting it into a successful compliance exchange.
Replaying a messaging request must not replay custody execution. Separate the evidence-exchange operation from the instruction that moves assets. The design should demonstrate how duplicate deliveries, delayed acknowledgements and an uncertain provider result reconcile to the same business operation without creating a second transfer.
Route an exception to an authorized reviewer when resolving it requires judgment: conflicting beneficiary information, questionable counterparty identity or an unexplained discrepancy between the message and customer instruction. Present the conflict and its source references. An analyst should not need unrestricted production access to discover why automation stopped or which evidence was available at that point. Scope the decision to a specific transfer, action and evidence revision. Record the rationale, governing policy version and approval required by that workflow. A comment saying the issue looks acceptable is different from an event granting the next permitted action. Keep both without allowing free text to become an unbounded execution instruction.
Where another approval is required, preserve its actual occurrence and scope. Later corrections can invalidate the basis of an earlier decision even when the reviewer remains authorized. Require reevaluation under the declared policy when material evidence changes. Do not copy the old approval onto a newly corrected message automatically.
Use terminal handling when the responsible function determines that the attempted path cannot continue under the applicable policy. A rejection of a proposed outgoing transfer and a return of assets already received have different execution consequences. Record which object is being closed and whether assets are still controlled, already received or subject to an unresolved settlement state.
The EBA's final guidance, section 4.6 addresses rejecting or returning transfers and situations in which the original return method is unavailable. Use the governing policy to select the permitted handling. Never treat a blockchain receipt as something a software rejection can erase, or assume that the origin address is automatically an authorized return destination.
A return can require a separately controlled transfer with its own checks and evidence. Preserve the relationship to the original exception without treating it as a retry. Stop stale workers from resuming the rejected path, and keep unsettled or failed return attempts visible until their actual disposition is reconciled.
A single status such as pending cannot explain whether the system awaits a document, a provider response, reviewer approval or blockchain confirmation. Represent those questions separately. The operator needs to know what is unresolved, who owns it and which action is currently restricted. A status transition should answer one of those questions without silently deciding the others. For an outgoing transfer, distinguish information readiness from authorization to submit and from observed submission. For incoming assets, distinguish detection of receipt from the decision to make assets available. Add return status only when a return process exists. These are proposed modeling boundaries, not a claim that every provider exposes matching native states.
Map provider-specific responses into that internal meaning explicitly. Retain the original response alongside the mapping revision. If a provider changes its status vocabulary, the historical interpretation should remain inspectable instead of being recalculated under today's integration code.
Before choosing a workflow engine, define a proposed transition record that a reviewer can use after the provider dashboard is unavailable. Keep the minimum information needed for the declared review purpose, with controlled retrieval of sensitive sources.
Identity: internal transfer reference, messaging operation, attempt identity and counterparty reference.
Observation: original response or validation result, its source and the time it became available.
Interpretation: payload revision, mapping revision and the policy version used to classify the exception.
Control: restricted action, assigned owner and the next action permitted by that policy.
Decision: reviewer rationale, evidence revision consulted and actual required approval references.
Execution relationship: dispatch intent, provider result, custody reference and unresolved uncertainty where applicable.
Lifecycle: expiry action, superseding evidence, terminal disposition and the permitted retrieval boundary.
These seven groups are an engineering proposal rather than a mandated universal schema. The CASP evidence engineering hub connects this transition contract to broader control traces and recovery records. Retaining a field name without its interpretable source is not enough for reconstruction.
Consider synthetic outgoing transfer T-71, with no custody submission yet. Message M-1 lacks beneficiary information required by the fictional policy P-4. Local validation records that gap against evidence revision E-1 and prevents dispatch. The values and identifiers here are demonstration inputs. No customer transfer, production review or acceptance exercise was performed.
The missing information is unavailable locally, so request Q-1 opens a counterparty hold. Response A-1 supplies a corrected name in M-2, producing E-2. The system records that the response arrived. It does not infer that the discrepancy is acceptable. Because M-2 conflicts with the existing instruction, an analyst review remains open.
Reviewer D-1 authorizes the declared next action against E-2 under the fictional policy. Before dispatch, a later correction produces E-3. The execution gate must determine whether D-1 still applies under P-4. For this proposed exercise, P-4 requires a new decision for that material change. The expected finding is a blocked stale approval, not an automatically released transfer.
An exception can be resolved in one service while the transfer service holds an older view. Bind permission to the business operation, intended action and evidence revision the decision considered. At execution, check those relationships against the current controlled state. Define how a mismatch becomes a recoverable stop rather than a silent fallback. A later response may supersede only part of the evidence. Identify the affected fields and retain the decision about whether reevaluation is necessary. Do not assume that every new receipt changes substantive evidence, but do not treat every repeated identifier as an unchanged answer either. Compare the content and declared revision semantics supported by the integration.
For T-71, E-3 must remain distinguishable from E-2 even if the provider reuses a document link. A stable reference is useful only when its historical content can be resolved. If retention or provider access makes that impossible, the export should expose the limit instead of claiming exact historical reconstruction.
Suppose the process stops after sending a message but before recording the acknowledgement. Recovery should inspect the persisted operation and reconcile the provider result where supported. An absent local success event does not prove that the remote service did nothing. Keep the operation uncertain until available evidence establishes the next permitted action. Persist an execution intent before the controlled action, then link the observed result to it. The appropriate durability mechanism depends on the actual system. A design discussion should identify failure boundaries rather than promise exactly-once behavior across unrelated services. Ask what happens when persistence fails, a worker restarts or the provider cannot report a historical result.
An exception-resolution event should not be sufficient to recreate expired authority after recovery. Restore the outstanding work and recheck the applicable permission. The conflicting-clock incident guide explains the adjacent chronology problem. Preserve source and receipt times rather than sorting every event into a falsely precise sequence.
Deliver the same synthetic response twice and ask the team to show two receipts linked to one substantive update. Then deliver an older response after a newer correction. The older material should remain available as history without silently becoming the current instruction. State the integration's actual ordering evidence and acknowledge where order cannot be established.
Change the payload while retaining the same counterparty correlation reference. This checks whether deduplication incorrectly suppresses a material correction. Reverse the case by giving an identical payload a new delivery identifier. A receiver that treats every delivery as a new approval can create duplicate work even without duplicate asset movement.
These are proposed acceptance scenarios. Run them only in an authorized environment with synthetic data and record the actual results separately. Passing these examples would establish behavior for the exercised configuration, not prove that every historical exception or counterparty integration has been covered.
An incoming transfer can be observed while its accompanying information is missing or disputed. The evidence should identify receipt, the information gap and the action currently restricted. A generic rejected label can conceal assets that still require controlled handling, reconciliation and a responsible owner. Separate operational communications from any permitted return instruction. Verify destination handling through the applicable process and retain the relationship to the original receipt. If a return cannot be completed, record the actual reason and current custody state. Do not close the exception solely because an outbound return request was accepted by a service.
The specific safeguarding, information and reporting obligations belong to the operator's applicable framework. The engineering requirement is to expose unresolved work rather than allowing the case interface to report closure while another system still holds assets or an uncertain execution result.
An information-request deadline and a delivery-retry budget answer different questions. Define which clock starts each interval, what pauses it and which owner acts when it expires. Store the applicable rule and its evaluated result with the case. A deadline shown only as a changing countdown cannot explain why a previous shift selected terminal handling.
Suppose a response arrives after the case has been closed. Preserve the receipt, but route it through the declared reopening decision. It must not reactivate a canceled execution intent by updating a shared status field. If policy permits a new attempt, establish the new operation and its relationship to the closed one explicitly.
The operator's policy supplies the actual intervals and calendars. Check weekends, time zones and interrupted workers against those rules during the authorized exercise. Do not infer a legal response period from an integration timeout or a customer-support target.
Travel Rule information can contain sensitive identity data. Keep operational logs from becoming an unrestricted copy of the exchanged payload. A routine operator may need a reason code and controlled source reference. An authorized reviewer may need additional content. Define that access boundary explicitly and test retrieval using the intended recipient role. Set retention and deletion behavior through the responsible privacy and compliance owners. Historical reconstruction does not justify retaining every identity attachment indefinitely. Where source material is no longer lawfully available, preserve the permitted record of the limitation and the owner who can explain it. A checksum cannot recover deleted content or prove its original accuracy.
A supplier export should identify which evidence relationships survive termination of provider access. Ask for a sample containing redacted material, an expired source and a correction. The recipient must be able to distinguish a privacy transformation from missing evidence and from an unrelated retrieval failure.
Give each proposed implementation the same T-71 trace and permitted recipient role. Ask it to show the original gap, the counterparty response, the conflicting revision and the approval scope. Then interrupt one transport attempt and introduce one later correction. Record the expected findings before running the exercise so the demonstration cannot redefine success around its output.
When fragmented messaging and case decisions obscure this relationship, Pharos Production's published Travel Rule software development scope is relevant to the implementation discussion. It includes originator and beneficiary data exchange and VASP messaging. That service description supports the scope, not a claim that T-71 was delivered or that these proposed checks passed.
Require a readable evidence export alongside the interface demonstration. The recipient should identify which workflow owns the remaining exception and why the next action is permitted or blocked. Record unavailable dependencies as findings with owners, rather than completing the scorecard from feature names alone.
Local repair requires maintained validation and transformation rules. Counterparty holds require follow-up capacity. Transport retries require reconciliation and route ownership. Analyst review consumes decision capacity, while rejection or return can create additional custody work. Estimate those activities separately before combining them into an operating proposal. During an authorized pilot, measure waiting time by cause, manual touches and unresolved handovers using a declared population. Separate business transfers from delivery attempts so retry traffic does not inflate the apparent exception count. Publish no recovery-time or cost-reduction percentage until there is evidence for that measured scope.
Bring the disputed trace and operating boundaries to a MiCA compliance software development discussion with Pharos Production. Agree which decisions, evidence relationships and recovery checks the delivery must support. Select the workflow for the question it can resolve, and leave every remaining restriction visible to the next responsible owner.
Dmytro Nasyrov. Photo supplied by the author.
Written by Dmytro Nasyrov PhD, software architect with 24 years of production experience. Dmytro is the founder and CTO of Pharos Production. He works on production software architecture for FinTech, AI, Web3 and blockchain systems.