---
updatedAt: 2026-09-18T15:17:18.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Confirm wallet ownership

# Overview

Use this method to confirm that the wallet address belongs to a specific applicant, and to enrich the [Travel Rule](https://docs.sumsub.com/sumsub/reference/overview-travel-rule) message with the transaction participant (beneficiary or originator) data.

## Required permissions

To use this method:

* Your [app token](https://docs.sumsub.com/sumsub/docs/app-tokens) must have the **Manage TM transactions - Decisions** [permission](https://docs.sumsub.com/sumsub/docs/user-roles#permissions).
* **Travel Rule** must be enabled for your account.

Both conditions are required — missing either one returns a `403 Forbidden`. If **Travel Rule** is not enabled for your account, contact your CSM or Sumsub support.

## Request examples

```curl With known applicantId
curl -X POST \
     'https://api.sumsub.com/resources/kyt/txns/test_txn_id/travelRuleOwnership' \
     -H 'content-type: application/json' \
     -H 'X-App-Token: <your-app-token>' \
     -H 'X-App-Access-Sig: <your-signature>' \
     -H 'X-App-Access-Ts: <unix-timestamp>' \
     -d '{
            "applicantId": "67a0ec0b9aa095000000000f"
         }'
```
```curl If applicantId is unknown
curl -X POST \
     'https://api.sumsub.com/resources/kyt/txns/test_txn_id/travelRuleOwnership' \
     -H 'content-type: application/json' \
     -H 'X-App-Token: <your-app-token>' \
     -H 'X-App-Access-Sig: <your-signature>' \
     -H 'X-App-Access-Ts: <unix-timestamp>' \
     -d '{
            "applicantParticipant": {
              "fullName": "John Doe",
              "fullNameEn": "John Doe",
              "externalUserId": "external_user_id",
              "type": "individual"
            }
         }'
```

# Response explained

If the request is sent and processed correctly, you will get a JSON file that represents the [structured transaction information](https://docs.sumsub.com/sumsub/reference/get-transaction#response-explained). The presence of some fields depends on the transaction type and the matched [rules](https://docs.sumsub.com/sumsub/docs/tm-rules).

Mind the following behavior depending on the request inputs:

* If `applicantId` is not provided, a new applicant profile will be created with the transaction linked to this applicant. The response will include the generated `applicantId` along with the corresponding applicant data.
* If the applicant profile already exists, the `txn.data.applicant.fullName` field will be updated.
* The `travelRuleInfo.status` value is set to `completed` regardless of whether `applicantId` was supplied.

## Response examples

In case of success, you will get a response like in the following examples:

```json If applicantId is provided
// The `applicantId` value changes.

{
    "id": "67a22680c39d670000000000",
    "applicantId": "66c61271ba899b0000088888",
    "counterpartyApplicantId": "67a2267ec39d670000077777",
    "scope": "events",
    "externalUserId": "cool_external_user_id",
    "clientId": "your_id",
    "data": {
        "txnId": "a31b7787-6add-415a-bce1-0000000000e7",
        "txnDate": "2025-02-04 14:38:56+0000",
        "applicant": {
            "externalUserId": "cool_external_user_id",
            "fullName": "John Doe",
            "firstName": "John",
            "lastName": "Doe",
            "nameType": "birthName",
            "dob": "1991-04-07",
            "placeOfBirth": "Berlin, Germany",
            "address": {
                "subStreet": "100",
                "street": "Chauseestr.",
                "town": "Berlin",
                "postCode": "10000",
                "country": "DEU",
                "formattedAddress": "Chauseestr., 100, Berlin, Germany, 10000"
            },
            "type": "individual",
            "paymentMethod": {
                "type": "",
                "accountId": "bc1q080rkmk3kj86pxvf5nkxefdffclxkdjfb;hrvbzdkrf"
            },
            "idDoc": {
                "number": "DE00000000",
                "country": "DEU",
                "idDocType": "PASSPORT",
                "registrationAuthority": "BerlinMitte"
            },
            "residenceCountry": "DEU"
        },
        "counterparty": {
            "externalUserId": "counterparty_external_user_id",
            "fullName": "John Doe",
            "firstName": "John",
            "lastName": "Doe",
            "nameType": "birthName",
            "dob": "1992-05-08",
            "placeOfBirth": "Paris, France",
            "address": {
                "subStreet": "1",
                "street": "Rue de Rivoli",
                "town": "Paris",
                "postCode": "77777",
                "country": "FRA",
                "formattedAddress": "Rue de Rivoli, 100, Paris, France, 70000"
            },
            "type": "individual",
            "paymentMethod": {
                "type": "account",
                "accountId": "1A1zP1eP5QGefi2DMPzdflkjnsldkfjhbkxjdfh"
            },
            "device": {
                "ipInfo": {
                    "ip": "87.141.63.130",
                    "countryCode2": "DE",
                    "countryCode3": "DEU",
                    "city": "Berlin",
                    "zipCode": "13333",
                    "lat": 52.5583,
                    "lon": 13.3826,
                    "asn": 3320,
                    "asnOrg": "Deutsche Telekom AG",
                    "riskyAsn": false
                },
                "fingerprint": "irc3un0fc2p",
                "userAgentInfo": {
                    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0",
                    "agentName": "Firefox",
                    "majorVersion": "42",
                    "fullVersion": "42.0",
                    "deviceClass": "Desktop",
                    "deviceName": "Macintosh"
                }
            },
            "idDoc": {
                "number": "FR42255555",
                "country": "FRA",
                "idDocType": "PASSPORT",
                "registrationAuthority": "Ille-de-France 01"
            },
            "residenceCountry": "FRA"
        },
        "type": "travelRule",
        "info": {
            "type": "transfer",
            "direction": "in",
            "amount": 0.01,
            "currencyCode": "BTC",
            "currencyType": "crypto",
            "amountInDefaultCurrency": 961.5384615384615,
            "defaultCurrencyCode": "EUR"
        }
    },
    "score": 0,
    "review": {
        "reviewId": "xkFcj",
        "attemptId": "peqfY",
        "attemptCnt": 3,
        "elapsedSincePendingMs": 43317,
        "elapsedSinceQueuedMs": 43317,
        "createDate": "2025-02-04 14:38:56+0000",
        "reviewResult": {
            "reviewAnswer": "GREEN"
        },
        "reviewStatus": "completed",
        "confirmed": false
    },
    "createdAt": "2025-02-04 14:38:56+0000",
    "scoringResult": {
        "score": 0,
        "dryScore": 0,
        "matchedRules": [
            {
                "id": "66be1caaf47b4f7a6fccf5fb",
                "name": "TRI0-tra-rule-new-tr-data-exc-req-lVyy",
                "revision": 1,
                "title": "Travel Rule: New TR data exchange request",
                "score": 0,
                "dryRun": false,
                "action": "score",
                "stage": "pre",
                "preScoringRunnerType": "travelRule"
            }
        ],
        "action": "score",
        "ruleCnt": 4,
        "dryRunRuleCnt": 0
    },
    "typedTags": [
        {
            "label": "Mirrored",
            "type": "violation"
        }
    ],
    "travelRuleInfo": {
        "protocolName": "sns",
        "protocolAttempts": {
            "sns": "completed"
        },
        "applicant": {
            "externalUserId": "cool_external_user_idr_id",
            "fullName": "Jack Posek",
            "dob": "1991-04-07",
            "address": {
                "subStreet": "100",
                "street": "Chauseestr.",
                "town": "Berlin",
                "postCode": "10000",
                "country": "DEU",
                "formattedAddress": "Chauseestr., 100, Berlin, Germany, 10000"
            }
        },
        "counterparty": {
            "externalUserId": "counterparty_external_user_id",
            "fullName": "John Doe",
            "address": {
                "subStreet": "100",
                "street": "Rue de Rivoli",
                "town": "Paris",
                "postCode": "77777",
                "country": "FRA",
                "formattedAddress": "Rue de Rivoli, 100, Paris, France, 70000"
            }
        },
        "status": "completed",
        "applicantVaspId": "668d5fb69c98ed00000gsfTr",
        "counterpartyVaspId": "67977ac889a71d00000gsfTr"
    },
    "counterpartyKytTxnRef": {
        "txnId": "67a2267ec39d670000000000"
    },
    "needMasking": false,
    "mirrored": true,
    "txnInactive": false
}
```
```json If applicantId is not provided
// The `fullName` value changes to `New name`.

{
    "id": "67a22682c39d67000000000d",
    "applicantId": "67a2271fc39d67000000000a",
    "counterpartyApplicantId": "67a2267ec39d67000000000c",
    "scope": "events",
    "externalUserId": "cool_external_user_id",
    "clientId": "your_id",
    "data": {
        "txnId": "a0fa84f1-6c99-4ed9-9f1f-1b0000000txn",
        "txnDate": "2025-02-04 14:38:58+0000",
        "applicant": {
            "externalUserId": "cool_external_user_id",
            "fullName": "New name",
            "nameType": "birthName",
            "dob": "1991-04-07",
            "placeOfBirth": "Berlin, Germany",
            "address": {
                "subStreet": "100",
                "street": "Chauseestr.",
                "town": "Berlin",
                "postCode": "10000",
                "country": "DEU",
                "formattedAddress": "Chauseestr., 100, Berlin, Germany, 10000"
            },
            "type": "individual",
            "paymentMethod": {
                "type": "",
                "accountId": "bc1q080rkmk3kj86dfgdgpxvf5nkxefdcghmcghmcghjmcfghzxdtfg"
            },
            "idDoc": {
                "number": "DE42234089",
                "country": "DEU",
                "idDocType": "PASSPORT",
                "registrationAuthority": "BerlinMitte"
            },
            "residenceCountry": "DEU"
        },
        "counterparty": {
            "externalUserId": "counterparty_external_user_id",
            "fullName": "John Doe",
            "firstName": "John",
            "lastName": "Doe",
            "nameType": "birthName",
            "dob": "1992-05-08",
            "placeOfBirth": "Paris, France",
            "address": {
                "subStreet": "100",
                "street": "Rue de Rivoli",
                "town": "Paris",
                "postCode": "77777",
                "country": "FRA",
                "formattedAddress": "Rue de Rivoli, 1, Paris, France, 77777"
            },
            "type": "individual",
            "paymentMethod": {
                "type": "account",
                "accountId": "1A1zP1eP5QGefi2DMPTxfchjcgukcyftxz"
            },
            "device": {
                "ipInfo": {
                    "ip": "87.141.63.130",
                    "countryCode2": "DE",
                    "countryCode3": "DEU",
                    "city": "Berlin",
                    "zipCode": "13333",
                    "lat": 52.5583,
                    "lon": 13.3826,
                    "asn": 3320,
                    "asnOrg": "Deutsche Telekom AG",
                    "riskyAsn": false
                },
                "fingerprint": "irc3un0fc2p",
                "userAgentInfo": {
                    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0",
                    "agentName": "Firefox",
                    "majorVersion": "42",
                    "fullVersion": "42.0",
                    "deviceClass": "Desktop",
                    "deviceName": "Macintosh"
                }
            },
            "idDoc": {
                "number": "FR42200000",
                "country": "FRA",
                "idDocType": "PASSPORT",
                "registrationAuthority": "Ille-de-France 01"
            },
            "residenceCountry": "FRA"
        },
        "type": "travelRule",
        "info": {
            "type": "transfer",
            "direction": "in",
            "amount": 0.01,
            "currencyCode": "BTC",
            "currencyType": "crypto",
            "amountInDefaultCurrency": 961.5384615384615,
            "defaultCurrencyCode": "EUR"
        }
    },
    "score": 0,
    "review": {
        "reviewId": "NJqFu",
        "attemptId": "IxBBH",
        "attemptCnt": 4,
        "elapsedSincePendingMs": 156674,
        "createDate": "2025-02-04 14:38:58+0000",
        "reviewResult": {
            "reviewAnswer": "GREEN"
        },
        "reviewStatus": "completed",
        "confirmed": false
    },
    "createdAt": "2025-02-04 14:38:58+0000",
    "scoringResult": {
        "score": 0,
        "dryScore": 0,
        "matchedRules": [
            {
                "id": "66be1caaf47b4f7a6fccf5fb",
                "name": "TRI0-tra-rule-new-tr-data-exc-req-lVyy",
                "revision": 1,
                "title": "Travel Rule: New TR data exchange request",
                "score": 0,
                "dryRun": false,
                "action": "score",
                "stage": "pre",
                "preScoringRunnerType": "travelRule"
            }
        ],
        "action": "score",
        "ruleCnt": 4,
        "dryRunRuleCnt": 0
    },
    "typedTags": [
        {
            "label": "Mirrored",
            "type": "violation"
        }
    ],
    "travelRuleInfo": {
        "protocolName": "sns",
        "protocolAttempts": {
            "sns": "completed"
        },
        "applicant": {
            "externalUserId": "cool_external_user_id",
            "fullName": "John Doe",
            "dob": "1991-04-07",
            "address": {
                "subStreet": "100",
                "street": "Chauseestr.",
                "town": "Berlin",
                "postCode": "10115",
                "country": "DEU",
                "formattedAddress": "Chauseestr., 100, Berlin, Germany, 10000"
            }
        },
        "counterparty": {
            "externalUserId": "counterparty_external_user_id",
            "fullName": "John Doe",
            "address": {
                "subStreet": "1",
                "street": "Rue de Rivoli",
                "town": "Paris",
                "postCode": "77777",
                "country": "FRA",
                "formattedAddress": "Rue de Rivoli, 100, Paris, France, 77777"
            }
        },
        "status": "completed",
        "applicantVaspId": "668d5fb69c98ed620cxfgnhxf",
        "counterpartyVaspId": "67977ac889a71d4xgkmblxkfn"
    },
    "counterpartyKytTxnRef": {
        "txnId": "67a22682c39d6760b0000000"
    },
    "needMasking": false,
    "mirrored": true,
    "txnInactive": false
}
```

If the request fails, you will receive an HTTP response containing an error code along with a message explaining the error. For example:

```json
{
  "description": "You don't have this feature enabled, please contact us",
  "code": 403,
  "correlationId": "808ab395e1ef217e5c9fc6fad349ed19"
}
```

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "sumsub-api",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.sumsub.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "name": "X-App-Token",
        "in": "header",
        "x-default": ""
      }
    }
  },
  "security": [
    {
      "sec0": []
    }
  ],
  "paths": {
    "/resources/kyt/txns/{id}/travelRuleOwnership": {
      "post": {
        "summary": "Confirm wallet ownership",
        "description": "",
        "operationId": "confirm-wallet-ownership",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Unique transaction identifier in the Sumsub system. <br><br>This ID is returned in the [response](https://docs.sumsub.com/reference/get-transaction#root-variables) to this request and a webhook (`kytTxnId`). Save it for future use in subsequent API calls. Alternatively, you can get this identifier by the [following method](https://docs.sumsub.com/sumsub/reference/get-transaction-information-by-txnid).",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "applicantId": {
                    "type": "string",
                    "description": "Unique identifier of the applicant in the Sumsub system. <br><br>⚠️ Specify if `applicantId` is known to you. When provided, the transaction will be linked to this applicant."
                  },
                  "applicantParticipant": {
                    "type": "object",
                    "description": "Data related to the transaction participant. <br><br>⚠️ Specify if `applicantId` is unknown to you. When provided, a new applicant profile will be created with the transaction linked to this applicant; or the applicant profile already specified in the transaction will be updated.",
                    "required": [
                      "fullName"
                    ],
                    "properties": {
                      "fullName": {
                        "type": "string",
                        "description": "Full name of the transaction participant."
                      },
                      "fullNameEn": {
                        "type": "string",
                        "description": "Participant’s full name transliterated in English. Use this field to provide an English version alongside the local-language name."
                      },
                      "type": {
                        "type": "string",
                        "description": "[Participant type](/docs/applicants). <ul><li><code>individual</code> — natural person.</li><li><code>company</code> — legal entity.</li></ul>",
                        "enum": [
                          "individual",
                          "company"
                        ]
                      },
                      "firstName": {
                        "type": "string",
                        "description": "First name."
                      },
                      "firstNameEn": {
                        "type": "string",
                        "description": "Transliterated first name."
                      },
                      "lastName": {
                        "type": "string",
                        "description": "Last name."
                      },
                      "lastNameEn": {
                        "type": "string",
                        "description": "Transliterated last name."
                      },
                      "externalUserId": {
                        "type": "string",
                        "description": "Unique identifier of the transaction participant as registered on your side. <br><br>⚠️ Required to create a corresponding applicant profile in the Sumsub system. If an existing `externalUserId` is provided, the transaction will be attached to the applicant with that ID instead of creating a new profile. All other fields are processed as usual."
                      },
                      "placeOfBirth": {
                        "type": "string",
                        "description": "Place of birth. This can be a city, a town or another settlement type."
                      },
                      "dob": {
                        "type": "string",
                        "description": "Date of birth.",
                        "format": "date"
                      },
                      "address": {
                        "type": "object",
                        "description": "Participant address.",
                        "properties": {
                          "country": {
                            "type": "string",
                            "description": "Alpha-3 country code (for example, `DEU`, `GBR`, `ARG`, and so on)."
                          },
                          "postCode": {
                            "type": "string",
                            "description": "Address postal code."
                          },
                          "town": {
                            "type": "string",
                            "description": "The city, town, or another settlement."
                          },
                          "street": {
                            "type": "string",
                            "description": "Street name."
                          },
                          "subStreet": {
                            "type": "string",
                            "description": "Additional information related to the street. This could be a house number or any other details."
                          },
                          "state": {
                            "type": "string",
                            "description": "The state, region, district, county or another territorial entity inside a country (if applicable)."
                          },
                          "buildingName": {
                            "type": "string",
                            "description": "Building name (if applicable)."
                          },
                          "flatNumber": {
                            "type": "string",
                            "description": "Flat or apartment number."
                          },
                          "buildingNumber": {
                            "type": "string",
                            "description": "Building number."
                          },
                          "formattedAddress": {
                            "type": "string",
                            "description": "Address in a human readable format. For example, `Design Offices, Philipsbornstraße 2, 30165 Hannover, Germany`."
                          }
                        }
                      },
                      "leiCode": {
                        "type": "string",
                        "description": "Refers to a Legal Entity Identifier (LEI) code—public identifier from the financial entities registry."
                      },
                      "licenseNumber": {
                        "type": "string",
                        "description": "Number of a license assigned for a time-bound term for a specific activity type, like banking or gambling. Applicable to the `company` type."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```