{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"End-to-End Guide","description":"Public TRP API for VASP-to-VASP Travel Rule data exchange.","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":"end-to-end-guide"},"children":["End-to-End Guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A typical Travel Rule transaction passes through five stages."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1.-generate-jwt-token"},"children":["1. Generate JWT Token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the first step in every API session. You send your API Key and"," ","receive a temporary JWT token."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Why this is needed"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Protects the API"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prevents unauthorized access"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensures every transfer is linked to a verified VASP"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/auth/createtoken"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /auth/token"]}]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2.-generate-travel-address"},"children":["2. Generate Travel Address"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Travel Address"]}," is a unique identifier for the beneficiary VASP. It"," ","acts like a Travel Rule routing code that tells TRP where to deliver"," ","IVMS101 beneficiary data."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To generate it, you only provide:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Beneficiary first name"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Beneficiary last name (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["legalName"]}," for legal entities)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No sensitive data is exposed"]}," by the Travel Address itself — it is a"," ","URL-safe encoded routing token."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When to use"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Before initiating a transfer"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When a user enters a beneficiary's wallet address"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["During onboarding flows"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/address/generatetraveladdress"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /travel-address/generate"]}]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3.-initiate-transfer-travel-rule-request"},"children":["3. Initiate Transfer (Travel Rule Request)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the main Travel Rule operation. You submit:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Originator data"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Beneficiary data"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Asset and amount"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Travel Address (OPEN_VASP flow) ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["or"]}," beneficiary email (EMAIL flow)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Callback URL"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TRP will:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate IVMS101 originator & beneficiary data"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Determine the beneficiary VASP from the Travel Address"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Forward the data securely"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Await their confirmation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Send callback updates to your backend"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/transfer/initiatetransfer"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /transfers/initiate"]}]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4.-inquiry-/-inquiry-resolution"},"children":["4. Inquiry / Inquiry Resolution"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The receiving VASP responds with an inquiry resolution containing the"," ","beneficiary wallet address. TRP routes this back to the originator's"," ","callback URL."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/compliance/transferinquiry"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /transfers/inquiry/{beneficiaryPublicId}"]}]}," ","and ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/compliance/transferinquiryresolution"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /transfers/inquiryResolution"]}]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5.-broadcast-txid--confirmation"},"children":["5. Broadcast TxId & Confirmation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the transfer is broadcast on-chain, the originator VASP submits"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["txId"]},". TRP forwards a final confirmation callback to the beneficiary VASP."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/compliance/transfertxid"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /transfers/txId"]}]}," and"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/openapi/compliance/transferconfirmation"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /transfers/confirmation"]}]},"."]}]},"headings":[{"value":"End-to-End Guide","id":"end-to-end-guide","depth":1},{"value":"1. Generate JWT Token","id":"1.-generate-jwt-token","depth":2},{"value":"2. Generate Travel Address","id":"2.-generate-travel-address","depth":2},{"value":"3. Initiate Transfer (Travel Rule Request)","id":"3.-initiate-transfer-travel-rule-request","depth":2},{"value":"4. Inquiry / Inquiry Resolution","id":"4.-inquiry-/-inquiry-resolution","depth":2},{"value":"5. Broadcast TxId & Confirmation","id":"5.-broadcast-txid--confirmation","depth":2}],"frontmatter":{"title":"End-to-End Guide","seo":{"title":"End-to-End Guide"}},"lastModified":"2026-05-11T08:02:14.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/pages/end-to-end-guide","userData":{"isAuthenticated":false,"teams":["anonymous"]}}