> ## 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.

# 관련 거래 조회 API

> Didit에서 모니터링 중인 거래와 vendor_data 당사자를 공유하는 애플리케이션 내 다른 거래를 최신순으로 페이지네이션하여 조회합니다.



관련 거래 목록 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`List the transactions related to one Didit monitored transaction through the Management API.

Endpoint:
GET https://verification.didit.me/v3/transactions/{transaction_id}/related/

Authentication:
Use the x-api-key header with my Didit API key. A scoped key needs transactions: read. Keys limited to specific workflows or to approved sessions cannot call this endpoint.

Goal:
\- See the other transactions that involve the same people or companies as this one (same applicant, or this transaction's counterparty appearing elsewhere) so I can review a transaction in context.

Path parameter:
\- transaction_id: the Didit transaction uuid, not my own txn_id.

Behavior:
\- A transaction is related when one of its parties, in any role, has the same vendor_data as one of this transaction's parties. Matching uses vendor_data only, within my application.
\- The transaction itself is never returned. Parties without vendor_data are ignored, so if none of this transaction's parties has a vendor_data the result is always empty.
\- Ordered by txn_date, newest first, then created_at.
\- Paginated with limit (default 50) and offset. count is exact up to 100 and capped at 100 above that, so keep following next until it is null.

Example call:
curl -X GET "https://verification.didit.me/v3/transactions/{transaction_id}/related/?limit=50" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
\- results[].uuid: use it with GET /v3/transactions/{transaction_id}/ for the full detail.
\- results[].txn_id, status, score, severity, amount, currency, txn_date: the summary of each related transaction.
\- results[].subject_vendor_data and counterparty_vendor_data: which party links it to this transaction.
\- next: URL of the next page, null on the last page.

Failure modes:
\- 400: limit or offset above 1000000.
\- 401: the API key has expired.
\- 403: missing API key (a wrong, revoked or expired key gets 401) ({"detail": "You do not have permission to perform this action."}), a scoped key without transactions: read, a key with workflow or status limits, or a request from outside the key's IP allowlist.
\- 404: no transaction with this uuid in my application ({"detail": "No Transaction matches the given query."}).
\- 429: more than 600 GET requests per minute with this key; wait Retry-After seconds and retry.

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

붙여넣을 곳

관련 거래는 [거래를 제출](https://docs.didit.me/ko/transaction-monitoring/transactions.md#주체-및-거래-상대방)할 때 각 당사자에게 보내는 `vendor_data`로 연결됩니다. 같은 사람이나 기업에 대해서는 매번 같은 `vendor_data`를 보내십시오. 그러면 이 endpoint가 어떤 거래를 기준으로 해서든 해당 당사자의 전체 이력을 반환하며, 이는 Console의 [거래 상세](https://docs.didit.me/ko/transaction-monitoring/console.md#거래-상세) 화면에서 검토자가 **관련 거래**에서 보는 목록과 같습니다.각 결과는 [거래 목록 조회](https://docs.didit.me/ko/management-api/transactions/list.md)와 같은 요약 형식을 가집니다. 결과의 `uuid`로 [거래 조회](https://docs.didit.me/ko/management-api/transactions/get.md)를 호출하면 당사자, 알림, 규칙 실행 정보를 얻을 수 있습니다.


## OpenAPI

````yaml ko/openapi-25.json GET /v3/transactions/{transaction_id}/related/
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/transactions/{transaction_id}/related/:
    get:
      tags:
        - Transactions
      summary: 관련 거래 목록 조회
      description: >-
        이 거래와 동일한 인물 또는 기업이 관련된 애플리케이션 내의 다른 거래 목록을 조회합니다. 거래의 당사자 중 역할에 관계없이 이
        거래의 당사자 중 하나와 동일한 `vendor_data`를 가진 당사자가 있는 경우 관련 거래로 간주됩니다. 해당 거래 자체는
        반환되지 않으며, `vendor_data`가 없는 당사자는 무시됩니다. 이 거래의 당사자 중 누구도 이를 가지고 있지 않은 경우
        결과는 항상 비어 있습니다.


        결과는 `GET /v3/transactions/`의 요약 형태를 사용하며 최신순(`txn_date`, 그 다음
        `created_at`)으로 정렬됩니다. `limit` 및 `offset`으로 페이지네이션됩니다. `count`는 100까지
        정확하며 그 이상은 100으로 제한되므로 `next`가 `null`이 될 때까지 따라가십시오.


        범위가 지정된 API 키에는 `transactions: read`가 필요합니다. 일부 워크플로나 승인된 세션으로 제한된 키는 이
        endpoint를 호출할 수 없습니다. 이 목록을 완전하게 유지하려면 모든
        [거래](https://docs.didit.me/ko/transaction-monitoring/transactions#주체-및-거래-상대방)에서
        동일한 인물이나 기업에 대해 동일한 `vendor_data`를 전송하십시오.
      operationId: list_related_transactions
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            Didit 거래 UUID: `POST /v3/transactions/` 및 `GET /v3/transactions/`에서
            반환된 `uuid`입니다. 자체 `txn_id`는 허용되지 않습니다.
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            페이지당 거래 수입니다. 기본값은 50입니다. 양의 정수가 아닌 값은 50으로 대체되며, 1000000을 초과하는 값은
            `400`을 반환합니다.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            반환할 첫 번째 거래의 0부터 시작하는 위치입니다. `next`를 따르는 것이 좋습니다. 0 이상의 정수가 아닌 값은
            0으로 대체되며, 1000000을 초과하는 값은 `400`을 반환합니다.
      responses:
        '200':
          description: 최신순으로 정렬된 관련 거래 페이지입니다.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - next
                  - previous
                  - results
                properties:
                  count:
                    type: integer
                    description: >-
                      관련 거래 수: 최대 100개까지는 정확하며, 100개를 초과하면 100으로 제한됩니다. 페이지 수를
                      직접 계산하는 대신 `next`를 따르십시오.
                  next:
                    type: string
                    format: uri
                    nullable: true
                    description: 다음 페이지의 절대 URL이며, 마지막 페이지에서는 `null`입니다.
                  previous:
                    type: string
                    format: uri
                    nullable: true
                    description: 이전 페이지의 절대 URL이며, 첫 번째 페이지에서는 `null`입니다.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TransactionSummary'
              examples:
                One related transaction:
                  value:
                    count: 1
                    next: null
                    previous: null
                    results:
                      - uuid: abcdef99-3456-4890-abcd-ef1234567890
                        transaction_number: 4087
                        txn_id: your-txn-2026-10-02-017
                        transaction_type: finance
                        action_type: deposit
                        status: APPROVED
                        source: LIVE
                        direction: INBOUND
                        amount: '250'
                        currency: EUR
                        currency_type: fiat
                        preferred_currency_amount: '270.08'
                        preferred_currency_code: USD
                        payment_details: Card top-up
                        txn_date: '2026-10-02T14:10:00Z'
                        created_at: '2026-10-02T14:10:03.512244Z'
                        score: 12
                        severity: LOW
                        decision_reason_code: null
                        decision_reason_label: null
                        tags: []
                        subject_name: Maria Garcia
                        subject_vendor_data: user-12345
                        subject_type: user
                        subject_uuid: e1111111-2222-4333-8444-555555555555
                        counterparty_name: null
                        counterparty_vendor_data: null
                        counterparty_country: null
                        subject_country: ESP
                        assigned_to_name: null
                        travel_rule_status: null
                        application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        application_name: Production app
                        organization_id: 11111111-2222-3333-4444-555555555555
                        organization_name: Example Org
                No party has vendor_data:
                  value:
                    count: 0
                    next: null
                    previous: null
                    results: []
        '400':
          description: '`limit` 또는 `offset`이 1000000을 초과합니다. 본문은 객체가 아닌 메시지의 JSON 배열입니다.'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              examples:
                Limit too large:
                  value:
                    - limit must not exceed 1000000.
                Offset too large:
                  value:
                    - offset must not exceed 1000000.
        '401':
          description: >-
            API 키가 만료되었습니다. 만료일이 지정되어 생성된 키만 만료될 수 있으며, 해당 날짜 이후에는 이를 사용한 모든 요청에
            `401`이 반환됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            요청이 허용되지 않습니다. 키가 누락된 경우 일반 메시지가 반환되며, 잘못되거나 취소되었거나 만료된 키는 `401`을
            받습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without transactions read:
                  value:
                    detail: This API key has no read access to transactions.
                Key limited to workflows or approved sessions:
                  value:
                    detail: >-
                      This API key only reaches sessions inside its workflow or
                      status limits, so it can't use this endpoint.
                Outside the key's IP list:
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            애플리케이션에 이 UUID를 가진 거래가 존재하지 않습니다(생성된 적이 없거나, 삭제되었거나, 다른 애플리케이션 소유임).
            UUID가 아닌 `transaction_id`는 API에 도달하지 않으며, 이 JSON 본문 대신 `404` HTML
            페이지를 반환합니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            이 API 키로 분당 600건을 초과하는 GET 요청이 발생했습니다. `Retry-After`에 명시된 시간(초)만큼
            대기한 후 다시 시도하세요.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Throttled:
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
          headers:
            Retry-After:
              description: 현재 1분 기간이 초기화될 때까지 남은 시간(초)입니다.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: 이 예산에서 분당 허용되는 요청 수입니다.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: 현재 윈도우에 남은 요청 수입니다.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: 윈도우가 리셋되는 Unix 시간입니다.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/related/?limit=50'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.transactions.list_related(
                "abcdef12-3456-7890-abcd-ef1234567890",
            ):
                print(item)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            for await (const item of
            didit.transactions.listRelated("abcdef12-3456-7890-abcd-ef1234567890"))
            {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.ListRelatedAutoPaging(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsListRelatedParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            for (var item :
            client.transactions().listRelated("abcdef12-3456-7890-abcd-ef1234567890"))
            {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            foreach
            ($didit->transactions->listRelated('abcdef12-3456-7890-abcd-ef1234567890')
            as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            didit.transactions.list_related("abcdef12-3456-7890-abcd-ef1234567890").auto_paging_each
            do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            await foreach (var item in await
            client.Transactions.ListRelatedAsync("abcdef12-3456-7890-abcd-ef1234567890"))

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TransactionSummary:
      type: object
      description: >-
        모니터링된 거래의 요약 정보로, `GET /v3/transactions/`가 나열하는 형태입니다. 당사자, 알림 및 규칙 실행에
        대한 정보를 보려면 `uuid`를 사용하여 `GET /v3/transactions/{transaction_id}/`를 호출하세요.
      properties:
        uuid:
          type: string
          format: uuid
          description: Didit 거래 UUID입니다. 거래 endpoint에서 `{transaction_id}`로 사용하세요.
        transaction_number:
          type: integer
          nullable: true
          description: Console에 표시되는 애플리케이션별 순차 번호입니다.
        txn_id:
          type: string
          nullable: true
          description: 생성 호출 시 제공된 귀하 고유의 식별자입니다. 애플리케이션당 고유합니다.
        transaction_type:
          type: string
          description: >-
            저장된 카테고리: `finance`, `kyc`, `travelRule`, `userPlatformEvent`,
            `gamblingBet`, `gamblingLimitChange`, `gamblingBonusChange` 또는
            `auditTrailEvent`.
        action_type:
          type: string
          description: '카테고리 내 하위 유형입니다(예: `withdrawal`).'
        status:
          type: string
          enum:
            - APPROVED
            - IN_REVIEW
            - DECLINED
            - AWAITING_USER
          description: 현재 모니터링 판정 결과입니다.
        source:
          type: string
          enum:
            - LIVE
            - IMPORTED
          description: 모니터링을 위해 제출된 거래의 경우 `LIVE`, 과거 데이터 가져오기의 경우 `IMPORTED`.
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: 주체 기준의 방향입니다.
        amount:
          type: string
          description: 끝의 0이 제거된 십진수 문자열 형태의 금액입니다(최대 소수점 이하 18자리).
        currency:
          type: string
          description: '`amount`의 통화 코드 또는 암호화폐 자산 심볼입니다.'
        currency_type:
          type: string
          nullable: true
          description: 알려진 경우 `fiat` 또는 `crypto`.
        preferred_currency_amount:
          type: string
          nullable: true
          description: 환율이 제공되는 경우 애플리케이션의 선호 통화로 변환된 `amount`입니다.
        preferred_currency_code:
          type: string
          nullable: true
          description: '`preferred_currency_amount`의 통화입니다.'
        payment_details:
          type: string
          nullable: true
          description: 자유 형식 결제 참조입니다.
        txn_date:
          type: string
          format: date-time
          description: 거래가 발생한 시점입니다.
        created_at:
          type: string
          format: date-time
          description: Didit이 이를 기록한 시점입니다.
        score:
          type: integer
          description: 위험 점수. 높을수록 위험합니다.
        severity:
          type: string
          nullable: true
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
            - null
          description: 위험 심각도이며, 설정되기 전까지는 `null`입니다.
        decision_reason_code:
          type: string
          nullable: true
          description: 현재 `status`에 대한 기계 판독 가능한 사유.
        decision_reason_label:
          type: string
          nullable: true
          description: '`decision_reason_code`에 대한 사람이 읽기 쉬운 라벨입니다.'
        tags:
          type: array
          description: 거래의 태그입니다.
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
                description: '16진수 색상 코드입니다(예: `#F59E0B`).'
              description:
                type: string
                nullable: true
              source:
                type: string
                enum:
                  - didit
                  - custom
                description: Didit 프리셋 또는 커스텀 태그입니다.
        subject_name:
          type: string
          nullable: true
          description: '`APPLICANT` 당사자의 성명입니다.'
        subject_vendor_data:
          type: string
          nullable: true
          description: 신청인에 대한 귀하의 `vendor_data`입니다.
        subject_type:
          type: string
          nullable: true
          enum:
            - user
            - business
            - null
          description: 신청자가 Didit 사용자 또는 기업에 연결되어 있는지 여부입니다. 둘 다 연결되어 있지 않은 경우 `null`입니다.
        subject_uuid:
          type: string
          format: uuid
          nullable: true
          description: 신청자가 연결된 Didit 사용자 또는 기업의 UUID입니다.
        subject_country:
          type: string
          nullable: true
          description: 신청인의 국가 코드입니다.
        counterparty_name:
          type: string
          nullable: true
          description: '`COUNTERPARTY` 당사자의 성명(있는 경우)입니다.'
        counterparty_vendor_data:
          type: string
          nullable: true
          description: 거래 상대방에 대한 귀하의 `vendor_data`입니다.
        counterparty_country:
          type: string
          nullable: true
          description: 거래 상대방의 국가 코드입니다.
        assigned_to_name:
          type: string
          nullable: true
          description: 거래에 배정된 Console 검토자의 이름입니다.
        travel_rule_status:
          type: string
          nullable: true
          description: 거래의 Travel Rule 전송 상태이며, 없는 경우 `null`입니다.
        application_id:
          type: string
          format: uuid
          description: 거래를 소유한 애플리케이션입니다.
        application_name:
          type: string
          nullable: true
          description: 해당 애플리케이션의 이름입니다.
        organization_id:
          type: string
          format: uuid
          description: 애플리케이션을 소유한 조직입니다.
        organization_name:
          type: string
          nullable: true
          description: 해당 조직의 이름입니다.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 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.