Testing with Veriscope Sandbox Environment (aka Robot VASPs)
To streamline testing & integration efforts, Veriscope has a sandbox environment which enables VASPs to test the end-to-end flow without having to coordinate with others VASPs or run two nodes in parallel.
The sandbox environment simulates webhook events & responses for oVASPs and bVASPs depending on the direction of the flow. If your VASP initiates a new attestation [to a particular destination address], the sandbox will act as bVASP. On the otherhand, if your VASP responds to a particular attestation, the sandbox will act as oVASP.
This page describes how to test with the sandbox environment.
By including a test_vars parameter when creating/sending a KYC template you can determine the IVMS state code that the sandbox VASP uses when creating a KYC template. If the test_vars parameter is not set, the sandbox will auto-accept the template sent.
|
Mainnet vs Testnet
The Veriscope Sandbox is designed to be used with Shyft testnet, however, it can also be used in production to check responses to attestations against the Sandbox withdrawal / destination addresses on mainnet. That is to say, the oVASP flow (post attestation, receive a response) will work on both testnet and mainnet whereas the bVASP flow (respond to a specific attestation) will only work on testnet as that’s where those attestation are recorded.
Which Env | Be oVASP | Be bVASP |
---|---|---|
Mainnet |
O |
X |
Testnet |
O |
O |
Test as Originator VASP (Sandbox as bVASP)
Step 1 - Post attestation
Using the Veriscope Postman collection, create a new attestation to any of the PCF Corp VASP test addresses listed below (tBTC, tETH, tZEC, or tXMR).
`POST` {{baseUrl}}/api/v1/server/set_v3_attestation
js
This example is testing ETH with sandbox.
"ta_account": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
"user_account": "0xb532cCA105f966a76C3826451818b55fB2190933",
"jurisdiction": "5",
"coin_blockchain": "tETH",
"coin_token": "tETH",
"coin_address": "0xA4bdddE6cEA9FB6a57949EBA19E6D213dc569C67",
"coin_memo":"Add some content to remind you of this transaction"
json
When testing with the sandbox, you need to find the values for "coin_blockchain", "coin_token", and "coin_address" in the table below. |
-
ta_account
is your TA account -
user_account
is the originator/sender useraccount_address
from Create Shyft User API -
jurisdiction
is the originator/sender VASP jurisdictionid
from Get Jurisdictions API -
coin_blockchain
You can find the details for each currency below. For example, you can test with BTC using tBTC -
coin_token
same as coin_blockchain -
coin_address
Regarding the previous "coin_blockchain", we need to use the tBTC coin address. For example, you can test with 18crLganfufUzqFB2eH7jt4jPPYze45gZs this coin address
[]
json
Field | Value |
---|---|
VASP ENTITY |
PCF Corp |
VASP TYPE |
BENEFICIARY |
VASP API_URL |
|
VASP TA Account |
0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c |
VASP User |
Felix Bailey |
VASP User Account (Shyft User Id) |
0xb532cCA105f966a76C3826451818b55fB2190933 |
tBTC Address |
18crLganfufUzqFB2eH7jt4jPPYze45gZs |
Private Key |
L5HBFYkwBtVCk51NCCGDogDRjy5vhn7vP2WhEy1TAwXnYTvbCA1o |
tETH Address |
0xA4bdddE6cEA9FB6a57949EBA19E6D213dc569C67 |
Private Key |
932dc3b6fae4b3d7234563f34f90487140378b1ee569cff1176f489ea9769b35 |
tZEC Address |
t1V6m4PFXCNU3zBDEHfEEwC3ZpxKAZHmiC2 |
Private Key |
L4PzvEARNJcKhTh7uBXELrXHcMaP8w9pF8rniWXnx66c1X4j76yN |
tXMR Address |
45VzrocqjddFmy6vC58XPx5unNdHQozupbuCYPtFCXGreP7mZwCLijrX2pCSeMd1jiTFLohGVwqLyJauAtQ9d8xx3WjGKax |
Private Key |
1e7b4a3c9f464b4a6f65c10089f547504dcdda67bce51cbb0bef52b3b4d4690c |
On posting an attestation, you will receive the following webhook events.
Webhook Event: NEW_ATTESTATION
"eventType": "NEW_ATTESTATION"
json
{
"eventType": "NEW_ATTESTATION",
"ta_account": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
"jurisdiction": "5",
"effective_time": "1628341125",
"expiry_time": "1691585925",
"is_managed": "1",
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"transaction_hash": "0xecdf5bcf0077fb605a241200795d75d76bc23f1ad6eba827e543d42b274974cc",
"user_account": "0xb532cCA105f966a76C3826451818b55fB2190933",
"public_data": "0x00",
"public_data_decoded": null,
"documents_matrix_encrypted": "0x37383963383564316331366463343330306330343430653764323438633062373165323632396339623261613439316634313461626264653665353765626662666166633330303937303364313065353664626237643765656563376462653363336663666263336663663737656663663566636233646465363565636364373362643633623664363662313661643362643137366233366662353961636462316362356438363166333838363263336536643938613964353763363737383564633935663235306363353337383535363932613564653535303139326161373065613064336334373531633964323761343834393439303132353234323461343830393239323932356135653462353935393439343932353235323461343230393536333064656231343037326233383138643261613830383437303332633132393931616363363265393961306333333033333231613333343037643864373835623037326135636166303330646531633636366331626335366332623863326636373631623564363734333137366332336362353333356230656239333465383430646439336466666631303735666666366535333061",
"documents_matrix_encrypted_decoded": "789c85d1c16dc4300c0440e7d248c0b71e2629c9b2aa491f414abbde6e57ebfbfafc3009703d10e56dbb7d7eeec7dbe3c3fcfbc3fcf77efcf5fcb3dde65eccd73bd63b6d66b16ad3bd176b36fb59acdb1cb5d861f38862c3e6d98a9d57c67785dc95f250cc537855692a5de550192aa70ea0d3c4751c9d27a48494901252424a4809292925a5e4b59594949252524a42095630deb14072b3818d2aa80847032c12991acc62e99a0c3303321a33407d8d785b072a5caf030de1c666c1bc56c2b8c2f6761b5d6743176c23cb5335b0eb934e840dd93dfff1075fff6e530a",
"availability_address_encrypted": "0x2020202020202020202020202020202020202020202020202020202020202020",
"availability_address_encrypted_decoded": null,
"version_code": "3",
"coin_blockchain": "tETH",
"coin_token": "tETH",
"coin_address": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
"coin_memo": null
}
json
Webhook Event: OR_DATA_REQ
Handling tips
|
"eventType": "OR_DATA_REQ"
json
{
"eventType": "OR_DATA_REQ",
"kycTemplate": {
"AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
"BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
"BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
"s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
"s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
"v": "0x25"
},
"CoinBlockchain": "tETH",
"CoinToken": "tETH",
"CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
"CoinMemo": null,
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
"SenderTAPublicKey": null,
"SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"SenderUserPublicKey": null,
"SenderTASignatureHash": null,
"SenderTASignature": null,
"SenderUserSignatureHash": null,
"SenderUserSignature": null,
"BeneficiaryKYC": null,
"SenderKYC": null,
"BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
"SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
}
}
json
Step 2 - Respond with signature data
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
js
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"user_account": "0xb34111d81f65cc3662db94f2e82303ad5d39dc60",
"user_public_key": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"user_signature": "{\"r\":\"0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af\",\"s\":\"0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10\",\"v\":\"0x25\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": (optional),
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"coin_address_crypto_proof": (Optional)
json
|
-
Postman: Create Template
Webhook Event: BE_ENC
"eventType": "BE_ENC"
json
{
"eventType": "BE_ENC",
"kycTemplate": {
"AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
"BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
"BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
"s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
"s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
"v": "0x25"
},
"CoinBlockchain": "tETH",
"CoinToken": "tETH",
"CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
"CoinMemo": null,
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
"SenderTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
"SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"SenderUserPublicKey": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"SenderTASignature": {
"r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
"s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
"v": "0x25"
},
"SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"SenderUserSignature": {
"r": "0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af",
"s": "0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10",
"v": "0x25"
},
"BeneficiaryKYC": "BNJjcSmk0+menM+1GznnaxWzFm/SlIr9LHoIVE+dYQ1gU2NG91jAHH1s/fj9nT9mhn1331/flQ8y7HVJZO1WxRnNPfzINvwuM2rf8KnSqBQoI30kljr/0X+ngavp8YtSnbBfB4o1xWM9H1z5cV11MmK5diZ/mFILdSn9AerkvOHjJerx3Is=",
"SenderKYC": null,
"BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
"SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
}
}
json
Webhook Event: OR_KYC_REQ
"eventType": "OR_KYC_REQ"
json
{
"eventType": "OR_KYC_REQ",
"kycTemplate": {
"AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
"BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
"BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
"s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
"s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
"v": "0x25"
},
"CoinBlockchain": "tETH",
"CoinToken": "tETH",
"CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
"CoinMemo": null,
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
"SenderTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
"SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"SenderUserPublicKey": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"SenderTASignature": {
"r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
"s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
"v": "0x25"
},
"SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"SenderUserSignature": {
"r": "0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af",
"s": "0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10",
"v": "0x25"
},
"BeneficiaryKYC": "BNJjcSmk0+menM+1GznnaxWzFm/SlIr9LHoIVE+dYQ1gU2NG91jAHH1s/fj9nT9mhn1331/flQ8y7HVJZO1WxRnNPfzINvwuM2rf8KnSqBQoI30kljr/0X+ngavp8YtSnbBfB4o1xWM9H1z5cV11MmK5diZ/mFILdSn9AerkvOHjJerx3Is=",
"SenderKYC": null,
"BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
"SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
}
}
json
Step 3: Send Encrypted IVMS data
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
js
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"user_account": "0xb34111d81f65cc3662db94f2e82303ad5d39dc60",
"user_public_key": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"user_signature": "{\"r\":\"0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af\",\"s\":\"0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10\",\"v\":\"0x25\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": "BHSDX4Epe9uUNUNKsbLFVuEyesD5sohV0q9bDGCPBz087IgYZhiR4HB/uBJTjqrA3n8b3TkepPvBYeRyYdAbdsYc3j1hw9dnRAFZgS02BZrqbwTOsKfTYDZyPj7P+sMjk2hi7TXOmd0Qk2lEdUHB0ARavH/S7zMVI0v8geuv+og=",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": (optional),
"test_vars": "ivms_state_code=0202"(optional),
"coin_address_crypto_proof": (Optional)
json
|
Webhook Event: OR_KYC_ACCEPTED
"eventType": "OR_KYC_ACCEPTED"
json
{
"eventType": "OR_KYC_ACCEPTED",
"kycTemplate": {
"AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
"BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
"BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
"s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
"s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
"v": "0x25"
},
"CoinBlockchain": "tETH",
"CoinToken": "tETH",
"CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
"CoinMemo": null,
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
"SenderTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
"SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
"SenderUserPublicKey": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"SenderTASignature": {
"r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
"s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
"v": "0x25"
},
"SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"SenderUserSignature": {
"r": "0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af",
"s": "0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10",
"v": "0x25"
},
"BeneficiaryKYC": "BNJjcSmk0+menM+1GznnaxWzFm/SlIr9LHoIVE+dYQ1gU2NG91jAHH1s/fj9nT9mhn1331/flQ8y7HVJZO1WxRnNPfzINvwuM2rf8KnSqBQoI30kljr/0X+ngavp8YtSnbBfB4o1xWM9H1z5cV11MmK5diZ/mFILdSn9AerkvOHjJerx3Is=",
"SenderKYC": "BGNoMNJ8DVLFEFsRvsduOsipPAf3zCwmlQnMOFYPxv5GBzXUGcX8TvPmf/6W5kHJ4ubUIIPN9uPjVrsqirLFWloW2sjLUS5Q2z75Nxl/O0Z0jfr6WDvLV2AO5/qfDQPl8CP6R8ZCdKY3Bt9exfYa8+nCLxYDEttnP0mwdxgQLHY=",
"BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
"SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
}
}
json
Step 4: Accept bVASP KYC template
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
js
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"user_account": "0xb34111d81f65cc3662db94f2e82303ad5d39dc60",
"user_public_key": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"user_signature": "{\"r\":\"0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af\",\"s\":\"0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10\",\"v\":\"0x25\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_state_code": "0202",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"coin_address_crypto_proof": (Optional)
json
In this step, there is no need to include the value of ivms_encrypt .
|
-
ivms_state_code
response to bVASP: accepted(0202) / soft reject(0307) / hard reject(0308)
Test as Beneficiary VASP (Sandbox as oVASP)
Step 1: Respond to attestation
Using the Veriscope Postman collection, create a KYC template and respond to any of the attestations listed below.
Attestation Hash |
---|
0xb4584f3c6cd13da48d4ade65491d5a07ff2ab8dade45a65d956818c818c8aab3 |
0x45310f730a6c342566ae3449414cfd825e4b4a9fa1b4fac0c9889cd7df68152e |
0x73406f62b3cd862305dfa3b29a1cd3731be58a263494003ca59e219728b7d5c0 |
0x9187cdd007b3f560876fdb495c33e808038e1b9479d933342a03d898dcbbbf1c |
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
js
"attestation_hash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"user_account": "0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e",
"user_public_key": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"user_signature": "{\"r\":\"0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44\",\"s\":\"0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876\",\"v\":\"0x26\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": (optional),
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"coin_address_crypto_proof": (Optional)
json
On creating a KYC template, you will receive the following webhook events.
Webhook Event: OR_KYC_ACCEPTED
"eventType": "BE_KYC_REQ"
json
{
"eventType": "BE_KYC_REQ",
"kycTemplate": {
"AttestationHash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"BeneficiaryTAAddress": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
"BeneficiaryTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
"BeneficiaryUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
"BeneficiaryUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
"s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
"s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
"v": "0x26"
},
"CoinBlockchain": "tBTC",
"CoinToken": "tBTC",
"CoinAddress": "1FRf4bSEBw7zbKDjZZ47kbeB4Lw6rvbnxm",
"CoinMemo": "sandbox test btc",
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0xc2106031dac53b629976e12af769f60afcb38793",
"SenderTAPublicKey": "0x046131efac648ffc1980062b428f532e0b5860dd0c559a853c3e43058bba54e79bab5c03487999f75dfdeacbfd8d5564efe87570fae9a5d309012100d60afd7b37",
"SenderUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
"SenderUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"SenderTASignature": {
"r": "0xf5855d2e9b70d6fd0cfb3658c626742c4e3cde5bdea3961ef796b4bb3363b5f3",
"s": "0x4e88c6ded3e549683bf936fd764e1322debaead339557dd868edcb00503c8a27",
"v": "0x26"
},
"SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"SenderUserSignature": {
"r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
"s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
"v": "0x26"
},
"BeneficiaryKYC": null,
"SenderKYC": null,
"BeneficiaryTAUrl": "https://sandbox.veriscope.network/kyc-template",
"SenderTAUrl": "https://paycase.veriscope.network/kyc-template"
}
}
json
Step 2: Sends IVMS data
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
js
"attestation_hash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"user_account": "0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e",
"user_public_key": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"user_signature": "{\"r\":\"0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44\",\"s\":\"0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876\",\"v\":\"0x26\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": "BIKUH525I1VZ6EBVlwKHwmDUcI+hhqiOW8JmA9XRk5hZ675enAjKqlLepoiLGLyckaN14+kvApHDFfdl1I2E4Ost+SkerOYMYQGG1XHUbtVNU+z6vQm/YLwPXWh4cQrUPGGtg/reH93c/o7ikCgRPr4cAuSVv7H2do23w+aKlNE=",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"test_vars": "ivms_state_code=0202"(optional),
"coin_address_crypto_proof": (Optional)
json
Webhook Event: OR_ENC
"eventType": "OR_ENC"
json
{
"eventType": "OR_ENC",
"kycTemplate": {
"AttestationHash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"BeneficiaryTAAddress": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
"BeneficiaryTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
"BeneficiaryUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
"BeneficiaryUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
"s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
"s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
"v": "0x26"
},
"CoinBlockchain": "tBTC",
"CoinToken": "tBTC",
"CoinAddress": "1FRf4bSEBw7zbKDjZZ47kbeB4Lw6rvbnxm",
"CoinMemo": "sandbox test btc",
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0xc2106031dac53b629976e12af769f60afcb38793",
"SenderTAPublicKey": "0x046131efac648ffc1980062b428f532e0b5860dd0c559a853c3e43058bba54e79bab5c03487999f75dfdeacbfd8d5564efe87570fae9a5d309012100d60afd7b37",
"SenderUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
"SenderUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"SenderTASignature": {
"r": "0xf5855d2e9b70d6fd0cfb3658c626742c4e3cde5bdea3961ef796b4bb3363b5f3",
"s": "0x4e88c6ded3e549683bf936fd764e1322debaead339557dd868edcb00503c8a27",
"v": "0x26"
},
"SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"SenderUserSignature": {
"r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
"s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
"v": "0x26"
},
"BeneficiaryKYC": "BIKUH525I1VZ6EBVlwKHwmDUcI+hhqiOW8JmA9XRk5hZ675enAjKqlLepoiLGLyckaN14+kvApHDFfdl1I2E4Ost+SkerOYMYQGG1XHUbtVNU+z6vQm/YLwPXWh4cQrUPGGtg/reH93c/o7ikCgRPr4cAuSVv7H2do23w+aKlNE=",
"SenderKYC": "BC5QNJ1Vwqo3CQ2BSrum6U1m/df7ultUxP1qTJOZR9efGMuPXAcnei9XZpofa2IEyxqgc6OWC+7SHcwFbHW875Zb2aUgDB9bYrvzw8ZQ4FZsctCP4cDCyHzstaERMSK+p1tteGmV9Q0SmJKwhGKh9BOWyQirpFekV+jfWePd8Sai2sDdH7I=",
"BeneficiaryTAUrl": "https://sandbox.veriscope.network/kyc-template",
"SenderTAUrl": "https://paycase.veriscope.network/kyc-template"
}
}
json
Webhook Event: BE_KYC_ACCEPTED
"eventType": "BE_KYC_ACCEPTED"
json
{
"eventType": "BE_KYC_ACCEPTED",
"kycTemplate": {
"AttestationHash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"BeneficiaryTAAddress": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
"BeneficiaryTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
"BeneficiaryUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
"BeneficiaryUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"BeneficiaryTASignature": {
"r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
"s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
"v": "0x25"
},
"BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"BeneficiaryUserSignature": {
"r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
"s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
"v": "0x26"
},
"CoinBlockchain": "tBTC",
"CoinToken": "tBTC",
"CoinAddress": "1FRf4bSEBw7zbKDjZZ47kbeB4Lw6rvbnxm",
"CoinMemo": "sandbox test btc",
"CoinTransactionHash": null,
"CoinTransactionValue": null,
"SenderTAAddress": "0xc2106031dac53b629976e12af769f60afcb38793",
"SenderTAPublicKey": "0x046131efac648ffc1980062b428f532e0b5860dd0c559a853c3e43058bba54e79bab5c03487999f75dfdeacbfd8d5564efe87570fae9a5d309012100d60afd7b37",
"SenderUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
"SenderUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
"SenderTASignature": {
"r": "0xf5855d2e9b70d6fd0cfb3658c626742c4e3cde5bdea3961ef796b4bb3363b5f3",
"s": "0x4e88c6ded3e549683bf936fd764e1322debaead339557dd868edcb00503c8a27",
"v": "0x26"
},
"SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"SenderUserSignature": {
"r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
"s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
"v": "0x26"
},
"BeneficiaryKYC": "BIKUH525I1VZ6EBVlwKHwmDUcI+hhqiOW8JmA9XRk5hZ675enAjKqlLepoiLGLyckaN14+kvApHDFfdl1I2E4Ost+SkerOYMYQGG1XHUbtVNU+z6vQm/YLwPXWh4cQrUPGGtg/reH93c/o7ikCgRPr4cAuSVv7H2do23w+aKlNE=",
"SenderKYC": "BC5QNJ1Vwqo3CQ2BSrum6U1m/df7ultUxP1qTJOZR9efGMuPXAcnei9XZpofa2IEyxqgc6OWC+7SHcwFbHW875Zb2aUgDB9bYrvzw8ZQ4FZsctCP4cDCyHzstaERMSK+p1tteGmV9Q0SmJKwhGKh9BOWyQirpFekV+jfWePd8Sai2sDdH7I=",
"BeneficiaryTAUrl": "https://sandbox.veriscope.network/kyc-template",
"SenderTAUrl": "https://paycase.veriscope.network/kyc-template"
}
}
json
Step 3: Accepts oVASP KYC template
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
js
"attestation_hash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"user_account": "0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e",
"user_public_key": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"user_signature": "{\"r\":\"0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44\",\"s\":\"0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876\",\"v\":\"0x26\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_state_code": "0202",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"coin_address_crypto_proof": (Optional)
json