Pulling customer information

Once you have the information about the beneficiary of the value transfer, you now need to get the required information about the originator (your customer) so that it can also be added to the travel rule message.

This is done by leveraging the information you have already collected about the customer in your KYC database:

What needs to be transmitted about the originator varies from jurisdiction to jurisdiction. If you are unsure of what is needed, you can check the jurisdiction API or by using txValidateFull on the txCreate payload you got in Stage 1.

Checking originator requirements from jurisdictions

GET {{baseUrl}}/jurisdictions?countryCode=SG&fallbackToFATF=true

[
    {
        "thresholds": [
            {
                "conditions": [
                    {
                        "fields": [
                            {
                                "field": "originatorName"
                            },
                            {
                                "field": "beneficiaryName"
                            },
                            {
                                "field": "originatorAccountNumber"
                            },
                            {
                                "field": "beneficiaryAccountNumber"
                            }
                        ],
                        "conditions": [
                            {
                                "fields": [
                                    {
                                        "field": "originatorNationalIdentification"
                                    },
                                    {
                                        "field": "originatorDateAndPlaceOfBirth"
                                    },
                                    {
                                        "field": "originatorGeographicAddress"
                                    }
                                ],
                                "conditions": [],
                                "type": "OR"
                            }
                        ],
                        "type": "AND"
                    }
                ],
                "threshold": 1500
            },
            {
                "conditions": [
                    {
                        "fields": [
                            {
                                "field": "originatorName"
                            },
                            {
                                "field": "beneficiaryName"
                            },
                            {
                                "field": "originatorAccountNumber"
                            },
                            {
                                "field": "beneficiaryAccountNumber"
                            }
                        ],
                        "type": "AND"
                    }
                ],
                "threshold": 0.000001
            },
            {
                "conditions": [
                    {
                        "type": "AND"
                    }
                ],
                "threshold": 0
            }
        ],
        "countryCode": "SG",
        "currency": "SGD"
    }
]

Using the IVMS101 structure with the data collected about the beneficiary in stage 1:

{
    "transactionAsset": "BTC",
    "transactionAmount": "{{$randomInt}}{{$randomInt}}{{$randomInt}}",
    "originatorVASPdid": "{{vaspDID}}",
    "originatorEqualsBeneficiary": false,
    "travelRuleBehavior": true,
    "beneficiaryVASPdid": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
    "beneficiaryVASPname": "",
    "transactionBlockchainInfo": {
        "txHash": "",
        "origin": "{{$randomBitcoin}}",
        "destination": "{{$randomBitcoin}}"
    },
    "beneficiary": {
        "beneficiaryPersons": [
            {
                "naturalPerson": {
                    "name": [
                        {
                            "nameIdentifier": [
                                {
                                    "primaryIdentifier": "{{$randomLastName}}",
                                    "secondaryIdentifier": "{{$randomFirstName}}"
                                }
                            ]
                        }
                    ]
                }
            }
        ],
        "accountNumber": [
            "{{$randomBankAccount}}"
        ]
    }
}

In the response, you will see what originator information is missing by looking at the "errors":

{
    "isValid": false,
    "type": "TRAVELRULE",
    "beneficiaryAddressType": "UNKNOWN",
    "addressSource": "UNKNOWN",
    "beneficiaryVASPname": "Notabene VASP SG",
    "beneficiaryVASPdid": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
    "errors": [
        "originatorNameMissing",
        "originatorAccountNumberMissing",
        "OR [",
        "originatorNationalIdentificationMissing",
        "originatorDateAndPlaceOfBirthMissing",
        "originatorGeographicAddressMissing",
        "]"
    ]
}