Skip to main content

What happened

Your payout required a Travel Rule message to the receiving institution, but the institution rejected it before the on-chain broadcast. No funds were moved. The payout is in a terminal failed state with failureCode: travel_rule_rejected.

Common causes

  • Attestation conflict — the payout sent attestation.custody: "self", but the destination address belongs to a custodian, such as an exchange. A customer’s account at a custodian is not a self-hosted wallet. See Send to or fund from an account at a custodian
  • Unrecognized beneficiary — the receiving institution could not match the destination address or account to a known entity
  • Policy mismatch — the originating or beneficiary information did not meet the receiving institution’s compliance requirements
  • Unsupported corridor — the receiving institution does not accept Travel Rule messages for the requested corridor

Before the failure: the payout can be held

When the Travel Rule check rejects the payout’s own data, for example on an attestation conflict, the payout is held for review before anything is signed or broadcast. It reads status: "processing" and its amount stays reserved. The review either sends the payout or ends it as failed with this code, and then the reserved amount is released. Do not send a replacement payout while the first one is held: it would reserve the funds a second time. In sandbox, a held payout fails at once. A rejection by the receiving institution before the payout is broadcast is not held: the payout fails as soon as it arrives.

Recovery

This is a terminal state. The payout cannot be recovered; a new payout must be submitted.
1. Ask for the rejection detail failureMessage is Conduit’s fixed text for travel_rule_rejected. It does not carry the institution’s reason. Contact your account manager for the rejection detail. 2. Investigate the destination Verify the destination address is associated with a regulated custodian that participates in Travel Rule messaging. Unhosted wallets or unsupported custodians cannot be matched during the Travel Rule exchange. If the address is the customer’s own account at a custodian, send the new payout with attestation.custody: "third_party" and the account holder’s identity, as the custodian routes describe. 3. Submit a new payout to a different destination Once the issue is resolved, submit a new payout with a corrected or alternative destination:

Prevention

  • Attest custody correctly — send custody: "self" only for a self-hosted wallet the customer controls, never for an account at an exchange or custodian
  • Verify destination eligibility — confirm the destination address belongs to a custodian that supports Travel Rule before submitting high-value transfers
  • Handle transaction.failed with this code — use failureCode === 'travel_rule_rejected' to branch on this specific terminal state
The transaction.failed event fires when the payout terminates:
failureMessage is always the catalog text for travel_rule_rejected, never the institution’s own reason.