{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/wallet/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Set up Travel Rule","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"set-up-travel-rule","__idx":0},"children":["Set up Travel Rule"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To set up Travel Rule, connect your Notabene account to Wallet-as-a-Service, prepare your address book, and then create Travel Rule policy rules on your wallets."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-begin","__idx":1},"children":["Before you begin"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Feature access"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ripple has turned on Travel Rule and Policy Engine v2 for your organization."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notabene account"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your organization has its own Notabene workspace, with OAuth API credentials (client ID and client secret) and your VASP DID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Organization legal name"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Wallet-as-a-Service sends your organization's legal name as the originator. Confirm with Ripple that your organization's legal name is correct."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Role"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You're an owner or administrator. Connecting Notabene changes organization settings."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"connect-your-notabene-account","__idx":2},"children":["Connect your Notabene account"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the Wallet-as-a-Service console, go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Integrations"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notabene"]}," card, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/travel-rule-integrations.2eb751f0201ecafd2f31f5b232b3f25296e01855d7c65b7fcf745a881715e31e.0ba50ef8.png","alt":"The Integrations page with the Notabene card"},"children":[]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client ID"]},", ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client secret"]},", and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notabene VASP DID"]},". The DID looks like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["did:ethr:0x…"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect"]},"."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wallet-as-a-Service checks the credentials and DID with Notabene, and then registers a webhook with Notabene so it receives message updates. The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Travel Rule"]}," page shows your VASP name, VASP DID, webhook URL, and one of these statuses:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/travel-rule-connection.95e454feec4ba95e19057f1e4180ded2f9b9fbd4acd458d57a8e6c608f53f6c8.0ba50ef8.png","alt":"The Travel Rule connection page with status Webhook pending, the VASP name and DID, and the webhook URL"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connected"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The connection is ready, and you can create Travel Rule policy rules."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhook pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The credentials are valid, and Wallet-as-a-Service stored the webhook signing secret. It's waiting for the first verified webhook delivery from Notabene."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Credentials invalid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Notabene rejected the credentials. Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Update credentials"]}," and enter new ones."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Disconnected"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your organization doesn't have a connected Notabene account."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If Notabene rejects the credential and DID pair, the console shows an error and doesn't save the connection."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notabene"]}," card on the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Integrations"]}," page shows ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connected"]}," as soon as you save the connection, even while the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Travel Rule"]}," page shows ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhook pending"]},". To check the connection status, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["View"]}," on the card."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"One connection per DID"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Notabene delivers updates for a VASP DID to one webhook only. If two of your Wallet-as-a-Service organizations connect with the same DID, only the organization that connected most recently receives updates. Use a separate DID for each organization."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"disconnect-notabene","__idx":3},"children":["Disconnect Notabene"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the Notabene connection page, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Disconnect"]},". Disconnecting removes your Notabene credentials and stops Travel Rule checks for your organization."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your Travel Rule policy rules stay in place. While you're disconnected, Wallet-as-a-Service ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["rejects"]}," every outbound transfer that matches a Travel Rule rule, with reason ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRAVEL_RULE_NOT_CONFIGURED"]},". If you no longer need the rules, delete them."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prepare-your-address-book","__idx":4},"children":["Prepare your address book"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wallet-as-a-Service takes beneficiary information from your address book. For every external destination that a Travel Rule rule covers:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save the destination as an address on a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/admin-guide/manage-counterparties"},"children":["counterparty"]}," of type ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["organization"]},", with its legal name."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the address, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add custodian details"]},". Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Select custodian"]},", enter the beneficiary VASP's name, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Search"]},", and then select the VASP from the Notabene directory."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Confirm that the custodial information is correct, and then select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add address"]},". The address takes effect after your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Addresses"]}," approvers approve it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/address-book-custodian-details.b35ccdc667488485234038a7a7a569d92e7b935e7cd54ab7e577920a672f9dce.0ba50ef8.png","alt":"The Add address form with custodian details added"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wallet-as-a-Service rejects a covered transfer to a destination that isn't in the address book, has no custodian details, or belongs to an individual counterparty."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-travel-rule-policy-rule","__idx":5},"children":["Create a Travel Rule policy rule"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You need a connected Notabene account before you can create Travel Rule rules. Without one, the console shows ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Integrate a travel rule provider to add this policy type"]},", and the API returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAL006.046"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"in-the-console","__idx":6},"children":["In the console"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open the wallet and go to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Policy"]}," tab."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add a new rule"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Direction"]}," step, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Outbound"]}," for transfers from this wallet, or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Inbound"]}," for deposits into this wallet, and then select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Conditions"]}," step, select the asset, and then select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Travel rule"]}," under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rule"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For an outbound rule, select a level under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Release the withdrawal when"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#release-levels"},"children":["Release levels"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/policy-stepper-travel-rule-conditions.6ebe25d031ab2a259ab52960b368d7ef643de50840b30be7efd3549fd824dfe5.0ba50ef8.png","alt":"The Conditions step for an outbound Travel rule, with the four release levels"},"children":[]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Scope"]}," step, select the destinations the rule covers. For an inbound rule, the selection applies to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["sender"]},", even though the step labels it ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Advanced"]}," step, leave ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["All"]}," selected, or restrict the rule to one user or API credential."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Confirm"]}," step, review the rule, and then select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add policy rule"]},"."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The console creates a Travel Rule rule for one asset, with no amount threshold. To cover all assets, or only transfers of more than an amount, ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#with-the-api"},"children":["use the API"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"with-the-api","__idx":7},"children":["With the API"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v2/vaults/{vaultId}/wallets/{walletId}/policy-rules\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Outbound:"]}," This rule requires an accepted Travel Rule exchange for counterparty transfers of more than 1,000 of the asset:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"trigger\": \"OUTBOUND_INITIATED\",\n  \"assetId\": \"3::XRP\",\n  \"matchers\": [\n    { \"type\": \"ALL_COUNTERPARTIES\", \"values\": [] }\n  ],\n  \"definition\": {\n    \"kind\": \"TRAVEL_RULE\",\n    \"travelRule\": {\n      \"travelRuleReleaseLevel\": \"TRAVEL_RULE_RELEASE_LEVEL_ACCEPTED\",\n      \"amount\": {\n        \"threshold\": \"1000\",\n        \"operator\": \"GT\",\n        \"aggregation\": \"SINGLE_TX\"\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Inbound:"]}," This rule checks every deposit into the wallet, for any asset:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"trigger\": \"INBOUND_DETECTED\",\n  \"definition\": {\n    \"kind\": \"TRAVEL_RULE\",\n    \"travelRule\": {}\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Rules"},"children":["Rules"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["trigger"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OUTBOUND_INITIATED"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INBOUND_DETECTED"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assetId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional. To cover all assets, leave it out. If you set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]},", you must also set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assetId"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["travelRule.travelRuleReleaseLevel"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Outbound rules require it. Inbound rules don't accept it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["travelRule.amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional. Set the operator to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GT"]}," and the aggregation to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SINGLE_TX"]},". If you leave out the amount, the rule covers every matching transfer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["matchers"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional. On outbound rules, destination matchers match the recipient. On inbound rules, they match the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["sender"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"release-levels","__idx":8},"children":["Release levels"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The release level sets how far the outbound Travel Rule message must progress before Wallet-as-a-Service lets the transfer continue to signing."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"API value"},"children":["API value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Console label"},"children":["Console label"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"The transfer continues when"},"children":["The transfer continues when"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRAVEL_RULE_RELEASE_LEVEL_NEW"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Message created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Notabene creates the message."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRAVEL_RULE_RELEASE_LEVEL_SENT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Message sent"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The message reaches the beneficiary VASP."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRAVEL_RULE_RELEASE_LEVEL_ACK"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Address confirmed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The beneficiary VASP confirms the destination address."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRAVEL_RULE_RELEASE_LEVEL_ACCEPTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transfer accepted"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The beneficiary VASP accepts the transfer. The console selects this level by default."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A stricter level is safer but slower. If the counterparty doesn't respond, the transfer waits until it times out."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"when-more-than-one-rule-applies","__idx":9},"children":["When more than one rule applies"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If several Travel Rule rules apply to the same transfer, the most specific rule wins. For example, a rule for one counterparty overrides a rule for the whole wallet. When rules are equally specific, a rule with an amount threshold overrides a rule without one."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-travel-rule-rules-dont-cover","__idx":10},"children":["What Travel Rule rules don't cover"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sweeps, Web3 signing, plaintext signing, passkey signing, and passkey transfers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Transfers to your own wallets, unless a rule covers them. A rule with no matchers, or with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WALLET_ID"]}," matcher, covers transfers to your own wallets. Wallet-as-a-Service sends these as same-VASP transfers, which Notabene settles without a counterparty response. Rules with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ALL_COUNTERPARTIES"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COUNTERPARTY_ID"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ADDRESS_ID"]}," matchers don't cover your own wallets."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-documentation","__idx":11},"children":["Related documentation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/travel-rule/travel-rule-transactions"},"children":["Travel Rule transactions"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/policies/policy-rules-v2"},"children":["Policy rules (Policy Engine v2)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/admin-guide/manage-counterparties"},"children":["Manage counterparties"]}]}]}]},"headings":[{"value":"Set up Travel Rule","id":"set-up-travel-rule","depth":1},{"value":"Before you begin","id":"before-you-begin","depth":2},{"value":"Connect your Notabene account","id":"connect-your-notabene-account","depth":2},{"value":"Disconnect Notabene","id":"disconnect-notabene","depth":3},{"value":"Prepare your address book","id":"prepare-your-address-book","depth":2},{"value":"Create a Travel Rule policy rule","id":"create-a-travel-rule-policy-rule","depth":2},{"value":"In the console","id":"in-the-console","depth":3},{"value":"With the API","id":"with-the-api","depth":3},{"value":"Release levels","id":"release-levels","depth":3},{"value":"When more than one rule applies","id":"when-more-than-one-rule-applies","depth":3},{"value":"What Travel Rule rules don't cover","id":"what-travel-rule-rules-dont-cover","depth":3},{"value":"Related documentation","id":"related-documentation","depth":2}],"frontmatter":{"title":"Set up Travel Rule","seo":{"title":"Set up Travel Rule"}},"lastModified":"2026-09-24T12:38:12.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/wallet/user-interface/travel-rule/travel-rule-setup","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}