Case 1: Originator and Beneficiary are Different

A case where the Travel Rule triggers.

The receiving entity is a VASP, not Bitso, and the funds recipient is not the sender. The withdrawal request body varies depending on whether the beneficiary is uncreated, created without Travel Rule information declared, or created with Travel Rule information already declared.

Uncreated Beneficiary

The following objects show the general structure of the request body and exemplify its use. The request body includes the same key-value pairs of transactions under 1,000 euros providing the beneficiary’s address, but it adds a compliance object that contains the data of the recipient VASP and the beneficiary.

{
   "compliance": {
      "travel_rule": {
         "vasp": {
            "did": "did:ethr:0x4cd9136034d9a63d855391fce6dba64021530b01"
         },
         "beneficiary": {
            "name": "First name Last name | Business legal name",
            "type": "NATURAL | LEGAL"
         }
      }
   }
   
   #  … same transaction data as withdrawals under 1,000 euros
}
{
   "amount": "amount ≥ 1,000 euros",
   "currency": "xrp",
   "method": "rp",
   "origin_id": "android-cffbb40c5900c395d9244ed5",
   "network": "rp",
   "protocol": "ripple",
   "asset": "xrp",
   "address": "destination address",
   "destination_tag": "5403767",
   "max_fee": "0.15538100",
   "compliance": {
      "travel_rule": {
         "vasp": {
            "did": "did:ethr:0x401c4bc0241bc787f64510f21a4ae7ec3603487c"
         },
         "beneficiary": {
            "name": "Business legal name",
            "type": "LEGAL"
         }
      }
   }
}
{
   "amount": "amount ≥ 1,000 euros",
   "currency": "btc",
   "method": "btc",
   "origin_id": "android-cffbb40c5900c395d9244ed5",
   "network": "btc",
   "protocol": "btc",
   "asset": "btc",
   "address": "destination address",
   "max_fee": "0.15538100",
   "compliance": {
      "travel_rule": {
         "vasp": {
            "did": "did:ethr:0x401c4bc0241bc787f64510f21a4ae7ec3603487c"
         },
         "beneficiary": {
            "name": "First name Last name",
            "type": "NATURAL"
         }
      }
   }
}

Created Beneficiary without Travel Rule Information Declared

In the first transaction, you use the same request object as that of transactions under 1,000 euros providing the beneficiary's ID but include the compliance object for the Case at hand.

The following objects depict the general structure of the request body and exemplify its use:

{
  "amount": "amount ≥ 1,000 euros",
  "origin_id": "unique random ID",
  "max_fee": "highest fee user is willing to pay for the transaction",
  "contact_id": beneficiary ID,

  # … same compliance object required for Case 1 Uncreated Beneficiary
}
{
  "amount": "amount ≥ 1,000 euros",
  "origin_id": "android-cffbb40c5900c395d9244ed5",
  "max_fee": "0.15538100",
  "contact_id": "20395",
  "compliance": {
       "travel_rule": {
          "vasp": {
             "did": "did:ethr:0x401c4bc0241bc787f64510f21a4ae7ec3603487c"
          },
          "beneficiary": {
             "name": "Business legal name",
             "type": "LEGAL"
          }
       }
  }
}

Created Beneficiary with Travel Rule Information Already Declared

After you complete the first transaction equal to or greater than 1,000 euros for this beneficiary, you no longer need to include the compliance object that contains the data of the recipient VASP and the beneficiary. The request body is the same as the one used in transactions under 1,000 euros using the beneficiary's ID:

{
  "amount": "amount < 1,000 euros",
  "origin_id": "android-cffbb40c5900c395d9244ed5",
  "max_fee": "0.15538100",
  "contact_id": 20395
}

Did this page help you?