Appendix
IVMS
Notabene utilizes the IVMS 101 interVASP messaging standard to transmit required originator and beneficiary information.
const ivms = {
originator: {
originatorPersons: [
{
naturalPerson: {
name: [
{
nameIdentifier: [
{
primaryIdentifier: 'Wayne',
secondaryIdentifier: 'Bruce'
},
],
},
],
nationalIdentification: {
nationalIdentifier: 'AABBCCDDEEFF0011223344',
nationalIdentifierType: 'CCPT',
countryOfIssue: 'NZ',
},
dateAndPlaceOfBirth: {
dateOfBirth: '1900-01-01',
placeOfBirth: 'Planet Earth',
},
geographicAddress: [
{
addressLine: ['Cool Road /-.st'],
country: 'BE',
addressType: 'HOME',
},
],
},
},
],
accountNumber: ['01234567890'],
},
beneficiary: {
beneficiaryPersons: [
{
naturalPerson: {
name: [
{
nameIdentifier: [
{
primaryIdentifier: 'Greyson',
secondaryIdentifier: 'Dick'
},
],
},
],
},
},
],
accountNumber: ['01234567890'],
},
};
Payload
// transaction.create payload:
const payload = {
transactionAsset: 'ETH',
transactionAmount: '1111111000000000000',
originatorVASPdid: 'did:ethr:0xb086499b7f028ab7d3c96c4c2b71d7f24c5a0772',
beneficiaryVASPdid: 'did:ethr:0xa80b54afa45dc22a4ebc0e1a9b638998a7899c33',
transactionBlockchainInfo: {
origin: '0x123',
destination: '0x321',
},
originator: ivms.originator,
beneficiary: ivms.beneficiary,
};
VASP methods
get properties of a VASP
client.trustFramework.get(...) get properties of a VASP
get a list of VASPs
client.trustFramework.list(...) get a list of VASPs
update properties of your VASP
client.trustFramework.update(...) update properties of your VASP
Transaction methods
txValidate
Coming.
txValidateFull
Coming.
create a new outgoing transaction
client.transaction.create(...) create a new outgoing transaction (see details below)
Creates a new transaction. The fields required in a transaction differ depending on the jurisdiction of the originating VASP. Additional data may be provided to the beneficiary VASP depending on their jurisdiction.
// transaction.create payload:
const payload = {
transactionAsset: 'ETH',
transactionAmount: '1111111000000000000',
originatorVASPdid: 'did:ethr:0xb086499b7f028ab7d3c96c4c2b71d7f24c5a0772',
beneficiaryVASPdid: 'did:ethr:0xa80b54afa45dc22a4ebc0e1a9b638998a7899c33',
transactionBlockchainInfo: {
origin: '0x123',
destination: '0x321',
},
originator: ivms.originator,
beneficiary: ivms.beneficiary,
};
update transaction
client.transaction.update(...)
Update a transaction with the passed parameters.
const updatedTx = await client.transaction.update({
id: txCreated.id,
beneficiaryVASPdid: '...',
});
Note, you need specify an encryption method just like in transaction.create (and your jsonDIDKey):
const updatedTxEnd2End = await client.transaction.update(
{ id: txCreated.id, beneficiaryVASPdid: '...' },
jsonDIDKey // for END_2_END | HYBRID
// false | true
);
get transaction by id
client.transaction.get(...)
Gets the detail of a transaction that has been created based on the passed transaction ID.
const txInfo = await client.transaction.get(id);
// or
const txInfo = await client.transaction.get(id, jsonDIDKey);
If the transaction was encrypted with the HOSTED (default) or HYBRID strategy, the PII Service will be able to decrypt it for you, the ivms101 property will contain the decrypted data. However, for END_2_END encrypted data you can pass your jsonDIDKey argument to decrypt it locally.
retrieve a list of transactions
client.transaction.list(did)
Fetches a list of transactions belonging to a VASP. Transactions can be sorted, filtered, and searched and results are paginated.
approve a transaction by ID
client.transaction.approve(id)
Approves an outgoing transaction. If the VASP is present in the Notabene Directory, approving a transaction will send the transaction to them and set the transaction status to SENT. If the VASP is not in the Notabene Directory, approving the transaction will set the status to WAITING_FOR_INFORMATION.
cancel a transaction by ID
client.transaction.cancel(id)
Cancels the outgoing transaction and sets the status to CANCELLED.
confirm a transaction by ID
client.transaction.confirm(id)
Confirms that the blockchain address of the transaction belongs to the beneficiary VASP. Confirming sets the status of a transaction to ACK.
create an empty incoming transaction
client.transaction.notify(...)
Notifies the originator VASP of an incoming transaction on the blockchain.
reject a transaction by ID
client.transaction.reject(id)
Rejects a transaction indicating that the blockchain address is not owned by the beneficiary VASP. Rejecting sets the transaction status to REJECTED.
accept a transaction by ID
client.transaction.accept(id)
Accepts a transaction setting the status to ACCEPTED. Transactions can be automatically accepted by setting rules in the rules engine or manually using this endpoint.
decline a transaction by ID
client.transaction.decline(id)
Declines a transaction setting the status to DECLINED. Transactions can be automatically declined by setting rules in the rules engine or manually using this endpoint.
redirect transaction
client.transaction.redirect(fromDID, toDID)
Redirecting transaction allows beneficiary VASPs to route incoming transactions from one subsidiary to another.
txNotify
Check if an incoming deposit has received travel rule information or not.
const myfunc = async function () {
const txNotified = await client.transaction.notify(
"thisisthehash",
"123456789",
"BTC",
"did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
"destinationAddress",
"originAddress"
);
console.log(txNotified);
};
myfunc().catch((err) => console.error(err));
Updated 25 days ago