OVIP: 14
Title: Message Family: Transfer (TFR)
Author: David Riegelnig <david.riegelnig@bitcoinsuisse.com>
Discussions-To: https://community.openvasp.org/#narrow/stream/21-protocol-.2F.20ovip
Status: Accepted
Type: Standard
Created: 2020-06-14
The OpenVASP Transfer (TFR) message familiy provides a set of messages to facilitate a structured communication between the Originator VASP and the Beneficiary VASP transferring virtual assets on behalf of their customers. The messages are specified to ensure compliance with FATF Recommendation 16, often referred to as "Travel Rule".
Message specification follows the principles for OpenVASP Application Messages defined in ovip-007 (section 5).
This specification is a refined version of the protocol flow proposed in the OpenVASP White Paper (page 15). Changes reflect the decoupling introduced with the layer model (see ovip-0009) as well as the message streamlining suggested in ovip-0006.
Message type (type
)
TFR.100
Purpose
Seeking approval from the Beneficiary VASP for a virtual asset transfer by specifying transfer details including originator and beneficiary information.
Sender
Initiator (Originator VASP)
Message structure (body
)
Level 2 | Level 3 | Name | Type | Mult. | Comment |
---|---|---|---|---|---|
Version | version |
String | 1..1 | fixed value 1.0 |
|
Originator | see ovip-0013 (1.2) for elements | originator |
1..1 | ||
Beneficiary | see ovip-0013 (1.3) for elements | beneficiary |
1..1 | ||
Transfer | transfer |
1..1 | |||
Virtual asset type | va |
String | 1..1 | ||
Transfer type | ttype |
dt.TFR.ttype | 1..1 | ||
Amount | amount |
Decimal | 1..1 | 18 digits precision | |
Comment | comment |
String | 0..1 |
dt.TFR.ttype
Code | Description |
---|---|
BCTX |
Blockchain transaction |
Message type (type
)
TFR.200
Purpose
Response (positive or negative) to an Originator VASP having sought approval for a virtual asset transfer. If the response is positive, the destination address is specified to be used for this transfer.
Sender
Responder (Beneficiary VASP)
Message structure (body
)
Level 2 | Level 3 | Name | Type | Mult. | Comment |
---|---|---|---|---|---|
Version | version |
String | 1..1 | fixed value 1.0 |
|
Reply code | rcode |
dt.TFR.200.rcode | 1..1 | ||
Transfer | transfer |
0..1 | |||
Destination address | destadr |
String | 1..1 | ||
Comment | comment |
String | 0..1 |
dt.TFR.200.rcode
Code | Description |
---|---|
YES |
Transfer accepted |
NO_INVALID |
Transfer declined; request not valid |
NO_BENEFICIARY |
Transfer declined; no such beneficiary |
NO_VA |
Transfer declined; virtual asset not supported |
NO_AUTHORIZATION |
Transfer declined; transfer not authorized |
NO_SERVICE |
Transfer declined; temporary disruption of service |
Message type (type
)
TFR.300
Purpose
Notifies the Beneficiary VASP that a virtual asset transaction has been committed to the blockchain.
Sender
Initiator (Originator VASP)
Message structure (body
)
Level 2 | Level 3 | Name | Type | Mult. | Comment |
---|---|---|---|---|---|
Version | version |
String | 1..1 | fixed value 1.0 |
|
Transaction | tx |
1..1 | |||
Transaction identifier | txid |
String | 0..1 | Format specific to virtual asset / transfer type | |
Transaction datetime | txdate |
String | 1..1 | ISO 8601 (YYYY-MM-DDThh:mm:ssZ) | |
Sending address | txsendadr |
String | 0..1 | Blockchain-specific format, sending address used for transaction (non-UTXO systems) | |
Comment | comment |
String | 0..1 |
Message type (type
)
TFR.400
Purpose
Positive or negative acknowledgement to the Originator VASP about the receipt of virtual assets transferred via a blockchain transaction.
Sender
Responder (Beneficiary VASP)
Message structure (body
)
Level 2 | Name | Type | Mult. | Comment |
---|---|---|---|---|
Version | version |
String | 1..1 | fixed value 1.0 |
Reply code | rcode |
dt.TFR.400.rcode | 1..1 | |
Comment | comment |
String | 0..1 |
dt.TFR.400.rcode
Code | Description |
---|---|
YES |
Transfer confirmed |
NO_RECEIPT |
Transfer not confirmed; assets not received |
NO_INVALID |
Transfer not confirmed; dispatch not valid |
NO_AMOUNT |
Transfer not confirmed; wrong amount |
NO_VA |
Transfer not confirmed; wrong asset |
NO_TXDATA |
Transfer not confirmed; transaction data mismatch |
The specification proposed in this OVIP is not backwards compatible.