> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Travel Rule डिपॉज़िट मिलान API: संदेश का मिलान करें

> Didit में, प्रेषक डेटा की प्रतीक्षा कर रहे आने वाले डिपॉज़िट को मूल VASP के Travel Rule संदेश से जोड़ें, ताकि डिपॉज़िट को प्रेषक डेटा मिल जाए।



असंबद्ध Travel Rule जमा का मिलान API प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Pair an inbound deposit that still waits for originator data with the Travel Rule message the originating VASP sent for it.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/unmatched/{transaction_uuid}/match/

Authentication:
Use the x-api-key header with my Didit API key. A scoped API key needs the transactions privilege.

Path parameter:
\- transaction_uuid - the transaction_id of the unmatched deposit, from GET /v3/travel-rule/unmatched/.

Request body (JSON, required):
\- transaction_id (UUID) - the transaction_id of the received Travel Rule message: a row with kind "message" from GET /v3/travel-rule/transfers/?kind=message. The transfer's own id is not found.

curl example:
curl -X POST "https://verification.didit.me/v3/travel-rule/unmatched/<DEPOSIT_TRANSACTION_ID>/match/" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"transaction_id": "<MESSAGE_TRANSACTION_ID>"}'

Response 200:
\- deposit - the deposit row after the match: it now carries the message's originator data, counterparty VASP and rail, and matched_transaction_id points to the message.
\- message - the message row, with matched_transaction_id pointing to the deposit.

Failure modes:
\- 400 - transaction_id is missing, is the deposit itself, is not a received Travel Rule message, or is for a different asset than the deposit; or the transaction in the path is not an inbound deposit.
\- 401 - invalid API key.
\- 403 - the key lacks the transactions privilege.
\- 404 - the deposit or the message does not exist or was deleted.
\- 409 - the deposit no longer waits for originator data, or the message is already matched to a deposit. Nothing changes.

Full guide: /transaction-monitoring/travel-rule.`

\</pre>



      
      

यहाँ पेस्ट करें

## कब उपयोग करेंजब [असंबद्ध जमाएँ सूचीबद्ध करें](https://docs.didit.me/hi/management-api/travel-rule/list-unmatched-deposits.md) से मिली किसी जमा से जुड़ा प्राप्त Travel Rule संदेश उसी का हो और Didit ने दोनों को अपने आप न जोड़ा हो, तब इसका उपयोग करें।
जमा संदेश का प्रेषक डेटा, प्रतिपक्ष VASP और rail लेती है, और दोनों ट्रांसफ़र अपनी टाइमलाइन पर इस मिलान को दर्ज करते हैं।## अनुरोध```bash theme={null}
curl -X POST "https://verification.didit.me/v3/travel-rule/unmatched/DEPOSIT_TRANSACTION_ID/match/" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"transaction_id": "MESSAGE_TRANSACTION_ID"}'
```## नोट्स- पथ में `transaction_uuid` जमा है। बॉडी में `transaction_id` संदेश है।
- संदेश उसी एसेट के लिए होना चाहिए जिसके लिए जमा है।
- जब दोनों में से कोई एक पक्ष पहले ही आगे बढ़ चुका हो, तो कॉल `409` के साथ विफल हो जाती है और कुछ नहीं बदलती।
- Console से हटाया गया लेन-देन दोनों में से किसी भी ओर से `404` लौटाता है।## संबंधित- [असंबद्ध जमाएँ सूचीबद्ध करें](https://docs.didit.me/hi/management-api/travel-rule/list-unmatched-deposits.md)
- [Travel Rule ट्रांसफ़र सूचीबद्ध करें](https://docs.didit.me/hi/management-api/travel-rule/list-transfers.md)
- [Travel Rule](https://docs.didit.me/hi/transaction-monitoring/travel-rule.md)


## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/unmatched/{transaction_uuid}/match/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: पहचान सत्यापन API। x-api-key हेडर के साथ प्रमाणीकृत करें।
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/unmatched/{transaction_uuid}/match/:
    post:
      tags:
        - Travel Rule
      summary: प्राप्त संदेश से Travel Rule जमा का मिलान करें
      description: >-
        एक इनबाउंड डिपॉज़िट, जो अभी भी प्रेषक डेटा की प्रतीक्षा कर रहा है, उसे
        प्रेषक VASP द्वारा उसके लिए भेजे गए Travel Rule संदेश के साथ जोड़ें।
        डिपॉज़िट संदेश के प्रेषक डेटा, प्रतिपक्ष VASP और रेल को ग्रहण करता है,
        और दोनों ट्रांसफ़र अपनी टाइमलाइन पर मिलान रिकॉर्ड करते हैं।
        `transaction_uuid`, `GET /v3/travel-rule/unmatched/` से प्राप्त डिपॉज़िट
        का `transaction_id` है। बॉडी में मौजूद `transaction_id`, `GET
        /v3/travel-rule/transfers/?kind=message` की किसी पंक्ति से प्राप्त संदेश
        का `transaction_id` है; ट्रांसफ़र का अपना `id` नहीं मिलता है। संदेश उसी
        एसेट के लिए होना चाहिए जिसके लिए डिपॉज़िट है। Console से हटाया गया
        डिपॉज़िट या संदेश `404` का रिस्पॉन्स देता है; जो पहले ही आगे बढ़ चुका है
        (मिलान हो चुका है, या अब प्रतीक्षा में नहीं है) वह `409` का रिस्पॉन्स
        देता है।
      operationId: matchUnmatchedTravelRuleDeposit
      parameters:
        - name: transaction_uuid
          in: path
          required: true
          description: मिलान न किए गए डिपॉज़िट का `transaction_id`।
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleManualMatchRequest'
            example:
              transaction_id: e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24
      responses:
        '200':
          description: मिलान के बाद दोनों ट्रांसफर।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleManualMatchResponse'
              example:
                deposit:
                  id: 7d3a1c55-0b9e-4d52-8a3c-1f6e2b9d4a08
                  transaction_id: c41f9b2e-5a8d-4e0c-9f17-3b6d8a2e5c91
                  txn_id: dep-2026-10-20-0007
                  txn_date: '2026-10-19T08:41:12Z'
                  kind: deposit
                  direction: INBOUND
                  status: AWAITING_COUNTERPARTY
                  rail: TRP
                  asset: ETH
                  amount: '1.25'
                  originator_vasp: Example Counterparty VASP
                  beneficiary_vasp: Example Counterparty VASP
                  originator_wallet: '0x77ccff0cc624a53cd8b8d8703ced826710211ec7'
                  beneficiary_wallet: '0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb'
                  originator_memo: ''
                  beneficiary_memo: ''
                  originator_wallet_type: vasp
                  beneficiary_wallet_type: vasp
                  matched_transaction_id: e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24
                  deadline_at: null
                  created_at: '2026-10-19T08:41:13Z'
                message:
                  id: 2b8e6f10-9c3a-47d1-b5e2-0a4c7d9f3e66
                  transaction_id: e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24
                  txn_id: msg-2026-10-20-0003
                  txn_date: '2026-10-19T08:41:12Z'
                  kind: message
                  direction: INBOUND
                  status: COMPLETED
                  rail: TRP
                  asset: ETH
                  amount: '1.25'
                  originator_vasp: Origin CASP SL
                  beneficiary_vasp: Example Counterparty VASP
                  originator_wallet: '0x77ccff0cc624a53cd8b8d8703ced826710211ec7'
                  beneficiary_wallet: '0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb'
                  originator_memo: ''
                  beneficiary_memo: ''
                  originator_wallet_type: vasp
                  beneficiary_wallet_type: vasp
                  matched_transaction_id: null
                  deadline_at: '2026-10-21T08:41:13Z'
                  created_at: '2026-10-19T08:41:13Z'
        '400':
          description: >-
            सत्यापन त्रुटि: `transaction_id` गायब है, स्वयं डिपॉज़िट है, प्राप्त
            Travel Rule संदेश नहीं है, या डिपॉज़िट की तुलना में किसी भिन्न
            संपत्ति के लिए है; या पाथ में मौजूद लेन-देन इनबाउंड डिपॉज़िट नहीं
            है।
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Error:
                  value:
                    transaction_id:
                      - >-
                        The travel rule message is for a different asset than
                        the deposit.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: अज्ञात डिपॉज़िट या संदेश, या उनमें से कोई एक हटा दिया गया था।
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: No TravelRuleTransfer matches the given query.
        '409':
          description: >-
            जमा अब प्रेषक के डेटा की प्रतीक्षा नहीं कर रहा है, या संदेश पहले से
            ही किसी जमा से मेल खा चुका है।
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Error:
                  value:
                    detail: This deposit is no longer waiting for originator data.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.unmatched_deposits.match(
                "11111111-2222-3333-4444-555555555555",
                transaction_id="e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.travelRule.unmatchedDeposits.match("11111111-2222-3333-4444-555555555555",
            {
              transaction_id: "e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.UnmatchedDeposits.Match(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleManualMatchRequest{\n\tTransactionID: \"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.TravelRuleManualMatchRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().unmatchedDeposits().match("11111111-2222-3333-4444-555555555555",
            TravelRuleManualMatchRequest.builder()
                    .transactionId("e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->travelRule->unmatchedDeposits->match('11111111-2222-3333-4444-555555555555',
            [
                'transaction_id' => 'e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.travel_rule.unmatched_deposits.match(
              "11111111-2222-3333-4444-555555555555",
              transaction_id: "e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.TravelRule.UnmatchedDeposits.MatchAsync("11111111-2222-3333-4444-555555555555",
            new TravelRuleManualMatchRequest

            {
                TransactionId = "e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleManualMatchRequest:
      type: object
      required:
        - transaction_id
      properties:
        transaction_id:
          type: string
          format: uuid
          description: >-
            प्राप्त Travel Rule संदेश (पंक्ति जिसमें `kind: message` है) का
            `transaction_id`।
    TravelRuleManualMatchResponse:
      type: object
      required:
        - deposit
        - message
      properties:
        deposit:
          $ref: '#/components/schemas/TravelRuleTransferRow'
        message:
          $ref: '#/components/schemas/TravelRuleTransferRow'
    TravelRuleTransferRow:
      type: object
      description: >-
        एक Travel Rule ट्रांसफर जैसा कि ट्रांसफर सूची दिखाती है: केवल VASP नाम,
        वॉलेट और मेमो, कभी भी प्रेषक या लाभार्थी का व्यक्तिगत डेटा नहीं।
      properties:
        id:
          type: string
          format: uuid
          description: ट्रांसफर की id।
        transaction_id:
          type: string
          format: uuid
          description: Didit लेन-देन जिससे यह ट्रांसफर संबंधित है।
        txn_id:
          type: string
          nullable: true
          description: >-
            लेन-देन के लिए आपका अपना id। Didit आपके लिए जो ट्रांसफ़र बुक करता
            है, जैसे कि Didit Test VASP इनबाउंड ट्रांसफ़र, उनमें जनरेट किया गया
            id होता है।
        txn_date:
          type: string
          format: date-time
        kind:
          type: string
          enum:
            - withdrawal
            - deposit
            - message
          description: >-
            withdrawal: आउटबाउंड। message: एक इनबाउंड ट्रांसफर जिसे किसी रेल ने
            प्रतिपक्ष के संदेश (एक TRP पूछताछ, INTERNAL इनबाउंड लेग, या एक GTR,
            VerifyVASP या Sygna Bridge संदेश) से बनाया है। deposit: कोई अन्य
            इनबाउंड ट्रांसफर।
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
        status:
          type: string
          enum:
            - AWAITING_COUNTERPARTY
            - ON_HOLD
            - COMPLETED
            - FINISHED
            - CANCELLED
            - EXPIRED
            - COUNTERPARTY_MISMATCHED_DATA
            - COUNTERPARTY_VASP_NOT_FOUND
            - COUNTERPARTY_VASP_NOT_REACHABLE
            - UNCONFIRMED_OWNERSHIP
            - COUNTERPARTY_VASP_GENERAL_DECLINE
            - NOT_ENOUGH_COUNTERPARTY_DATA
            - NOT_APPLICABLE
        reason:
          type: string
          description: >-
            एक `COUNTERPARTY_VASP_NOT_FOUND` या
            `COUNTERPARTY_VASP_NOT_REACHABLE` ट्रांसफर क्यों अटका हुआ है,
            ट्रांसफर के अपने `reason` जैसा ही मान, ताकि सूची प्रत्येक ट्रांसफर
            को खोले बिना बाउंस हुए अनुपालन ईमेल और बिना किसी रूट वाले प्रतिपक्ष
            के बीच अंतर बता सके। किसी अन्य स्थिति के लिए `""`। देखें [ट्रांसफर
            क्यों अटका हुआ
            है](/hi/transaction-monitoring/travel-rule#ट्रांसफ़र-क्यों-अटका-है)।
        rail:
          type: string
          nullable: true
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - TEST_VASP
            - null
        asset:
          type: string
          description: लेन-देन की मुद्रा।
        amount:
          type: string
          description: सादे दशमलव के रूप में राशि, उदाहरण के लिए "1.25"।
        originator_vasp:
          type: string
          description: >-
            आउटबाउंड: आपके VASP का कानूनी नाम। इनबाउंड: प्रतिपक्ष का नाम, उसकी
            डायरेक्टरी प्रविष्टि से, Didit नेटवर्क सदस्य, TRP प्रेषक, Didit Test
            VASP, या ट्रांसफर द्वारा घोषित नाम। कोई ज्ञात न होने पर खाली।
        beneficiary_vasp:
          type: string
          description: >-
            आउटबाउंड: प्रतिपक्ष का नाम, जिसे उसी तरह निकाला गया है। इनबाउंड:
            आपके VASP का कानूनी नाम।
        originator_wallet:
          type: string
        beneficiary_wallet:
          type: string
        originator_memo:
          type: string
          description: मेमो या गंतव्य टैग, उन श्रृंखलाओं पर खाली जहाँ यह नहीं होता।
        beneficiary_memo:
          type: string
        originator_wallet_type:
          type: string
          enum:
            - vasp
            - self_hosted
            - own
          description: >-
            vasp, self_hosted (अनहोस्टेड घोषित) या own (एक वॉलेट जिसे आपकी पता
            पुस्तिका आपका मानकर रिकॉर्ड करती है)। आपका अपना पक्ष हमेशा vasp होता
            है।
        beneficiary_wallet_type:
          type: string
          enum:
            - vasp
            - self_hosted
            - own
        matched_transaction_id:
          type: string
          format: uuid
          nullable: true
          description: >-
            किसी डिपॉज़िट का दूसरा पक्ष जिसे आपने घोषित ट्रांसफ़र से मैन्युअल
            रूप से मिलाया है।
        deadline_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            यदि ट्रांसफर अभी भी अपने प्रतिपक्ष की प्रतीक्षा कर रहा है, तो इसकी
            समय-सीमा कब समाप्त होगी। आपके द्वारा `POST /v3/transactions/` के साथ
            बनाए जाने वाले प्रत्येक ट्रांसफर पर सेट किया जाता है, जिसके लिए
            एक्सचेंज की आवश्यकता होती है, चाहे वह आउटबाउंड हो या इनबाउंड।
            थ्रेशोल्ड से नीचे, ऐसे Lightning भुगतान पर जिस पर Travel Rule लागू
            नहीं होता है, और ऐसे इनबाउंड ट्रांसफर पर null होता है जिसे प्रतिपक्ष
            द्वारा आपसे संपर्क करने पर Didit बनाता है (एक इनबाउंड TRP पूछताछ, एक
            नेटवर्क संदेश या INTERNAL इनबाउंड लेग)।
        created_at:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: अनधिकृत
      content:
        application/json:
          examples:
            Invalid API Key:
              summary: अमान्य API कुंजी
              value:
                detail: Invalid API Key.
    Forbidden:
      description: निषिद्ध
      content:
        application/json:
          examples:
            No Permission:
              summary: कोई अनुमति नहीं
              value:
                detail: You do not have permission to perform this action.
            Not Enough Credits:
              summary: पर्याप्त क्रेडिट नहीं हैं
              value:
                error: >-
                  You don't have enough credits to perform this request. Please
                  top up at https://business.didit.me
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        आपकी एप्लिकेशन की API कुंजी, Business Console में Developers -> API keys
        से। प्राथमिक कुंजी के पास पूर्ण एक्सेस होता है। एक नामित कुंजी को स्कोप
        किया जा सकता है: प्रति संसाधन none, read या write, कुछ वर्कफ़्लो या
        स्वीकृत सत्रों तक सीमित, IP पतों की सूची तक सीमित, और समाप्ति तिथि तक
        सीमित। 401 का अर्थ है कि कुंजी गलत है, निरस्त कर दी गई है या उसकी
        समय-सीमा समाप्त हो गई है; 403 का अर्थ है कि कोई कुंजी नहीं भेजी गई थी,
        कुंजी के पास इस संसाधन या कार्रवाई का एक्सेस नहीं है, या अनुरोध उसकी IP
        सूची से बाहर के पते से आया था; सत्र रूट पर 404 का अर्थ है कि सत्र कुंजी
        के वर्कफ़्लो या स्थितियों से बाहर है। मीडिया एक्सेस के बिना एक कुंजी को
        छवि, वीडियो और PDF URL null के रूप में प्राप्त होते हैं, और सत्र write
        के बिना एक कुंजी को सत्र लिंक और token null के रूप में प्राप्त होते हैं।
        देखें https://docs.didit.me/console/api-keys।

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.