curl -X POST https://verification.didit.me/v3/travel-rule/inbound/ \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"chain":"ethereum","txid":"0xdeposit-hash","wallet_address":"0xYourDepositWallet","amount":"500.00","currency":"USDC"}'import requests
url = "https://verification.didit.me/v3/travel-rule/inbound/"
payload = {
"chain": "ethereum",
"txid": "0xdeposit-hash",
"wallet_address": "0xYourDepositWallet",
"amount": "500.00",
"currency": "USDC",
"originator_data": { "name": "Origin CASP SL" },
"beneficiary_data": { "name": "Ana Diaz" },
"originating_vasp": {
"name": "Origin CASP SL",
"lei": "",
"travel_address": "ta..."
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'ethereum',
txid: '0xdeposit-hash',
wallet_address: '0xYourDepositWallet',
amount: '500.00',
currency: 'USDC',
originator_data: {name: 'Origin CASP SL'},
beneficiary_data: {name: 'Ana Diaz'},
originating_vasp: {name: 'Origin CASP SL', lei: '', travel_address: 'ta...'}
})
};
fetch('https://verification.didit.me/v3/travel-rule/inbound/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/travel-rule/inbound/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain' => 'ethereum',
'txid' => '0xdeposit-hash',
'wallet_address' => '0xYourDepositWallet',
'amount' => '500.00',
'currency' => 'USDC',
'originator_data' => [
'name' => 'Origin CASP SL'
],
'beneficiary_data' => [
'name' => 'Ana Diaz'
],
'originating_vasp' => [
'name' => 'Origin CASP SL',
'lei' => '',
'travel_address' => 'ta...'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/travel-rule/inbound/"
payload := strings.NewReader("{\n \"chain\": \"ethereum\",\n \"txid\": \"0xdeposit-hash\",\n \"wallet_address\": \"0xYourDepositWallet\",\n \"amount\": \"500.00\",\n \"currency\": \"USDC\",\n \"originator_data\": {\n \"name\": \"Origin CASP SL\"\n },\n \"beneficiary_data\": {\n \"name\": \"Ana Diaz\"\n },\n \"originating_vasp\": {\n \"name\": \"Origin CASP SL\",\n \"lei\": \"\",\n \"travel_address\": \"ta...\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://verification.didit.me/v3/travel-rule/inbound/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"ethereum\",\n \"txid\": \"0xdeposit-hash\",\n \"wallet_address\": \"0xYourDepositWallet\",\n \"amount\": \"500.00\",\n \"currency\": \"USDC\",\n \"originator_data\": {\n \"name\": \"Origin CASP SL\"\n },\n \"beneficiary_data\": {\n \"name\": \"Ana Diaz\"\n },\n \"originating_vasp\": {\n \"name\": \"Origin CASP SL\",\n \"lei\": \"\",\n \"travel_address\": \"ta...\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/travel-rule/inbound/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"ethereum\",\n \"txid\": \"0xdeposit-hash\",\n \"wallet_address\": \"0xYourDepositWallet\",\n \"amount\": \"500.00\",\n \"currency\": \"USDC\",\n \"originator_data\": {\n \"name\": \"Origin CASP SL\"\n },\n \"beneficiary_data\": {\n \"name\": \"Ana Diaz\"\n },\n \"originating_vasp\": {\n \"name\": \"Origin CASP SL\",\n \"lei\": \"\",\n \"travel_address\": \"ta...\"\n }\n}"
response = http.request(request)
puts response.read_body{
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"txn_id": "<string>",
"created": true,
"travel_rule": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"protocol": "<string>",
"ivms_version": "ivms101.2023",
"required": true,
"ownership_confirmed": true,
"deadline_at": "2023-11-07T05:31:56Z",
"timeline": [
{
"status": "<string>",
"at": "2023-11-07T05:31:56Z",
"detail": "<string>"
}
],
"counterparty_vasp": {
"name": "<string>",
"lei": "<string>",
"dd_score": 123
},
"originator_data": {},
"beneficiary_data": {},
"created_at": "2023-11-07T05:31:56Z"
}
}{
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"txn_id": "<string>",
"created": true,
"travel_rule": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"protocol": "<string>",
"ivms_version": "ivms101.2023",
"required": true,
"ownership_confirmed": true,
"deadline_at": "2023-11-07T05:31:56Z",
"timeline": [
{
"status": "<string>",
"at": "2023-11-07T05:31:56Z",
"detail": "<string>"
}
],
"counterparty_vasp": {
"name": "<string>",
"lei": "<string>",
"dd_score": 123
},
"originator_data": {},
"beneficiary_data": {},
"created_at": "2023-11-07T05:31:56Z"
}
}Register Inbound (Sunrise) Transfer
Register Travel Rule data for a crypto deposit that already settled on-chain before any exchange took place. Creates an inbound travelRule transaction (or reuses an unclaimed deposit) and resolves the transfer against your wallet address book. A transaction.created webhook fires for newly-created transactions.
curl -X POST https://verification.didit.me/v3/travel-rule/inbound/ \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"chain":"ethereum","txid":"0xdeposit-hash","wallet_address":"0xYourDepositWallet","amount":"500.00","currency":"USDC"}'import requests
url = "https://verification.didit.me/v3/travel-rule/inbound/"
payload = {
"chain": "ethereum",
"txid": "0xdeposit-hash",
"wallet_address": "0xYourDepositWallet",
"amount": "500.00",
"currency": "USDC",
"originator_data": { "name": "Origin CASP SL" },
"beneficiary_data": { "name": "Ana Diaz" },
"originating_vasp": {
"name": "Origin CASP SL",
"lei": "",
"travel_address": "ta..."
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'ethereum',
txid: '0xdeposit-hash',
wallet_address: '0xYourDepositWallet',
amount: '500.00',
currency: 'USDC',
originator_data: {name: 'Origin CASP SL'},
beneficiary_data: {name: 'Ana Diaz'},
originating_vasp: {name: 'Origin CASP SL', lei: '', travel_address: 'ta...'}
})
};
fetch('https://verification.didit.me/v3/travel-rule/inbound/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/travel-rule/inbound/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain' => 'ethereum',
'txid' => '0xdeposit-hash',
'wallet_address' => '0xYourDepositWallet',
'amount' => '500.00',
'currency' => 'USDC',
'originator_data' => [
'name' => 'Origin CASP SL'
],
'beneficiary_data' => [
'name' => 'Ana Diaz'
],
'originating_vasp' => [
'name' => 'Origin CASP SL',
'lei' => '',
'travel_address' => 'ta...'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/travel-rule/inbound/"
payload := strings.NewReader("{\n \"chain\": \"ethereum\",\n \"txid\": \"0xdeposit-hash\",\n \"wallet_address\": \"0xYourDepositWallet\",\n \"amount\": \"500.00\",\n \"currency\": \"USDC\",\n \"originator_data\": {\n \"name\": \"Origin CASP SL\"\n },\n \"beneficiary_data\": {\n \"name\": \"Ana Diaz\"\n },\n \"originating_vasp\": {\n \"name\": \"Origin CASP SL\",\n \"lei\": \"\",\n \"travel_address\": \"ta...\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://verification.didit.me/v3/travel-rule/inbound/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"ethereum\",\n \"txid\": \"0xdeposit-hash\",\n \"wallet_address\": \"0xYourDepositWallet\",\n \"amount\": \"500.00\",\n \"currency\": \"USDC\",\n \"originator_data\": {\n \"name\": \"Origin CASP SL\"\n },\n \"beneficiary_data\": {\n \"name\": \"Ana Diaz\"\n },\n \"originating_vasp\": {\n \"name\": \"Origin CASP SL\",\n \"lei\": \"\",\n \"travel_address\": \"ta...\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/travel-rule/inbound/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"ethereum\",\n \"txid\": \"0xdeposit-hash\",\n \"wallet_address\": \"0xYourDepositWallet\",\n \"amount\": \"500.00\",\n \"currency\": \"USDC\",\n \"originator_data\": {\n \"name\": \"Origin CASP SL\"\n },\n \"beneficiary_data\": {\n \"name\": \"Ana Diaz\"\n },\n \"originating_vasp\": {\n \"name\": \"Origin CASP SL\",\n \"lei\": \"\",\n \"travel_address\": \"ta...\"\n }\n}"
response = http.request(request)
puts response.read_body{
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"txn_id": "<string>",
"created": true,
"travel_rule": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"protocol": "<string>",
"ivms_version": "ivms101.2023",
"required": true,
"ownership_confirmed": true,
"deadline_at": "2023-11-07T05:31:56Z",
"timeline": [
{
"status": "<string>",
"at": "2023-11-07T05:31:56Z",
"detail": "<string>"
}
],
"counterparty_vasp": {
"name": "<string>",
"lei": "<string>",
"dd_score": 123
},
"originator_data": {},
"beneficiary_data": {},
"created_at": "2023-11-07T05:31:56Z"
}
}{
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"txn_id": "<string>",
"created": true,
"travel_rule": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"protocol": "<string>",
"ivms_version": "ivms101.2023",
"required": true,
"ownership_confirmed": true,
"deadline_at": "2023-11-07T05:31:56Z",
"timeline": [
{
"status": "<string>",
"at": "2023-11-07T05:31:56Z",
"detail": "<string>"
}
],
"counterparty_vasp": {
"name": "<string>",
"lei": "<string>",
"dd_score": 123
},
"originator_data": {},
"beneficiary_data": {},
"created_at": "2023-11-07T05:31:56Z"
}
}Authorizations
Body
Chain the deposit settled on, e.g. "ethereum".
On-chain transaction hash. Deduped together with wallet_address.
The destination wallet you received the deposit on.
Deposit amount as a decimal string.
Deposit asset, e.g. "USDC".
IVMS-101 originator payload from the sending VASP, if known.
IVMS-101 beneficiary payload (your customer).
Optional description of the sending VASP.
Show child attributes
Show child attributes
Response
An existing unclaimed deposit was reused (created is false).
Didit transaction UUID for the inbound deposit.
Didit-generated txn_id for the sunrise transaction.
true when a new transaction was minted (HTTP 201); false when an existing unclaimed deposit was reused (HTTP 200).
Full transfer object returned by the ownership-confirmation and finish/cancel endpoints. originator_data/beneficiary_data are omitted while PII is masked (see description).
Show child attributes
Show child attributes