User Account Verification

User Account Verification

POST http://<enclave-endpoint>/v1/verifications/account

This API requests verification of whether the beneficiary address (wallet address or account number input by originator) belongs to a beneficiary VASP.

When making a withdrawal from the Originating VASP, the Originating VASP sends the Beneficiary’s wallet address and, optionally, name to Beneficiary VASP (Not recommend).

If the name is unknown to beneficiary VASP, the VASP verifies only the wallet address as it regards the amount is under the baseline.

If the name exists in beneficiary VASP's side, the VASP confirms and returns the combination of wallet address and name under the assumption that the withdrawal amount is over the legal baseline.

Request Body

Request Body Examples
  • When only checks the beneficiary's wallet address

{
  "keyType": "PerVasp",
  "beneficiaryVaspId": "27372039731940770",
  "symbol": "ETH",
  "network": "Ethereum",
  "payload": {
    "version": "1.0",
    "ivms101": {
      "beneficiary": {
        "accountNumber": ["0x5811001506550d8356a215be229c15b6ef371a9b"]
      }
    }
  }
}
  • When checks the beneficiary's name and wallet address (when withdrawing more than the legal amount)

{
  "keyType": "PerVasp",
  "beneficiaryVaspId": "27372039731940770",
  "symbol": "ETH",
  "network": "Ethereum",
  "payload": {
    "version": "1.0",
    "ivms101": {
      "beneficiary": {
        "beneficiaryPersons": [
          {
            "naturalPerson": {
              "name": {
                "nameIdentifier": [
                  {
                    "primaryIdentifier": "Taylor",
                    "secondaryIdentifier": "Robbins",
                    "nameIdentifierType": "LEGL"
                  }
                ]
              }
            }
          }
        ],
        "accountNumber": ["0x5811001506550d8356a215be229c15b6ef371a9b"]
      }
    }
  }
}
  • When checking only the wallet address of a legal person

{
  "keyType": "PerVasp",
  "beneficiaryVaspId": "27372039731940770",
  "symbol": "ETH",
  "network": "Ethereum",
  "payload": {
    "version": "1.0",
    "ivms101": {
      "beneficiary": {
        "accountNumber": ["0x5811001506550d8356a215be229c15b6ef371a9b"]
      }
    }
  }
}
  • When checks the name and wallet address of a legal person (when withdrawing more than the legal amount)

{
  "keyType": "PerVasp",
  "beneficiaryVaspId": "27372039731940770",
  "symbol": "ETH",
  "network": "Ethereum",
  "payload": {
    "version": "1.0",
    "ivms101": {
      "beneficiary": {
        "beneficiaryPersons": [
          {
            "legalPerson": {
              "name": {
                "nameIdentifier": [
                  {
                    "legalPersonName": "A Company",
                    "legalPersonNameIdentifierType": "LEGL"
                  }
                ]
              }
            }
          },
          {
            "naturalPerson": {
              "name": {
                "nameIdentifier": [
                  {
                    "primaryIdentifier": "Taylor",
                    "secondaryIdentifier": "Robbins",
                    "nameIdentifierType": "LEGL"
                  }
                ]
              }
            }
          }
        ],
        "accountNumber": ["0x5811001506550d8356a215be229c15b6ef371a9b"]
      }
    }
  }
}
Field Name
Data Type
Required
Description

keyType

string

true

beneficiaryVaspId

string

true

symbol

string

true

Virtual Asset.

The symbol of virtual assets (ex. ETH instead of Ethereum or Ether)

network

string

false

The name of the blockchain network on which the VA will be transferred (see the 'NETWORK field guide' under the 'Supplement' menu for details)

payload

object

true

IVMS101 format of beneficiary information (wallet address and name)

payload.version

string

true

IVMS101 message format version

payload.ivms101

object

true

Refer IVMS101 protocol for this field

Response Body

Success case

Response Body Examples
  • 200 OK

{
  "accountVerificationResult": "VERIFIED",
  "verifiedAt": "2022-03-03T21:52:08.092Z"
}

Response Body

Field Name
Data Type
Required
Example
Description

accountVerificationResult

string

true

"DENIED"

The result of verification

reason

string

false

"UNKNOWN-ADDRESS"

The reason field means that the detailed error code for when accountVerificationResult is DENIED

verifiedAt

date

true

"2022-03-03T18:19:20.092Z"

The verification datetime

  • accountVerificationResult field can be "VERIFIED" or "DENIED"

    • VERIFIED: Successfully verified account in beneficiary VASP.

    • DENIED: Unknown account or name, not verified on beneficiary VASP side.

  • reason field specification is as follows.

    • The field is valid only when result field is DENIED.

    • Refer to the below table for the message field value.

reason (string)
result (string)
message (string)
Description

UNKNOWN-SYMBOL

DENIED

The value of symbol name (which is not supported in VASP)

Unknown or not supported asset symbol

UNKNOWN-NETWORK

DENIED

The value of network name (which is not supported in VASP)

Unknown or not supported blockchain network (i.e. symbol matches but network does not)

UNKNOWN-ADDRESS

DENIED

The unknown wallet address

Unknown wallet address to the VASP

MISMATCHED-NAME

DENIED

-

Name mismatch

UNDEFINED-ERROR

DENIED

Error description

Undefined errors

BLACKLISTED

DENIED

-

The beneficiary is blacklisted

UNVERIFIED-KYC

DENIED

-

The beneficiary's KYC has not been verified

Error Codes

MISSING-* in case of missing mandatory parameters

Response Body Examples
  • 400 Bad Request

{
  "code": "MISSING-VASP",
  "message": "`beneficiaryVaspId` is required."
}

INVALID-* in case of invalid parameter input

Response Body Examples
  • 400 Bad Request

{
  "code": "INVALID-KEY-TYPE",
  "message": "`keyType` is invalid value."
}

The case of using a non-alliance member VASP ID

Response Body Examples
  • 400 Bad Request

{
  "code": "ALLIANCE-NOT-FOUND",
  "message": "Alliance is not found in given vendor"
}

The case of the beneficiaryVaspId of VASP is in inactive status

Response Body Examples
  • 400 Bad Request

{
  "code": "ALLIANCE-NOT-ACTIVE",
  "message": "Alliance is not active now"
}

The input symbol that is invalid or not supported by the VASP

Response Body Examples
  • 200 OK

{
  "accountVerificationResult": "DENIED",
  "reason": "UNKNOWN-SYMBOL",
  "verifiedAt": "2022-03-03T12:46:34.085Z"
}

The network is missing for assets deployed across multiple networks or not supported by the VASP

Response Body Examples
  • 200 OK

{
  "accountVerificationResult": "DENIED",
  "reason": "UNKNOWN-NETWORK",
  "message": "'network' is necessary",
  "verifiedAt": "2022-03-03T12:46:34.085Z"
}

The input of an invalid wallet address.

Response Body Examples
  • 200 OK

{
  "accountVerificationResult": "DENIED",
  "reason": "UNKNOWN-ADDRESS",
  "verifiedAt": "2022-03-03T12:47:05.817Z"
}

Mismatch to the address.

Response Body Examples
  • 200 OK

{
  "accountVerificationResult": "DENIED",
  "reason": "MISMATCHED-NAME",
  "verifiedAt": "2022-03-03T12:47:37.456Z"
}

Last updated