21 Analytics logo
Request a Demo


Wednesday, March 1, 2023

21 Product Family 6.0.0 includes major improvements to the API and GUI:

TRP 3.0 Auto-approve Has Been Implemented

One of the design choices of TRP is that it is open for industry collaboration and adoption. This means simplicity and automation is very important to achieve that.

For this reason 21 Travel Rule now allows you to activate auto-approve for counterparty VASPs that you trust. This will go through the whole TRP flow and automatically approve all transactions.

To reach the auto-approve feature you can mutate the TRP database through the GraphQL API:

1mutation {
2  trpd {
3    registerOrUpdateVasp(
4      vasp:{
5        url: "https://api.testing.21analytics.xyz/", 
6        name: "21 Testing AG", 
7        lei: "506700T7Z685VUOZL877", 
8        autoApproved: true
9      }
10    ){
11      autoApproved
12    }
13  }

To do this using the GUI, you can go to the Counterparty VASP's page and check the auto-approve checkbox when adding a new VASP,

or you can edit an existing VASP to use auto-approve.

New Proof Methods

As part of the new release, some new proof methods have been added and upgraded. You now have Satoshi Tests and the ability to upload videos as proof.

Satoshi Test

21 Travel Rule now supports self-hosted ownership proof using Satoshi Test. A method where the person willing to verify ownership of a wallet sends a small amount to a designated wallet in your VASP.
There are two new graphql mutations requestSatoshiProof(proof) and finalizeSatoshiProof(id, txId). You can also query Satoshi Test entries with the following:

2  aopd{
3    proofs(limit: 1, offset:0){
4      ... on AopdSatoshiProof{
5        id
6        asset
7        amount
8        depositAddress
9        senderAddress
10       status
11       dueAt
12       txId
13       createdAt
14      }
15    }
16  }

Visual Proof

The Visual Proofs method is an upgrade to the previous Screenshot Proof. You can now upload and store screenshot proofs as either an image or a video.
In a similar fashion to the Satoshi Test case. The API now has a registerMediaProof(proof, media) mutation and the following query:

2  aopd{
3    proofs(limit: 1, offset:0){
4      ... on AopdMediaProof{
5        id
6        asset
7        address
8        mediaPath
9        createdAt
10      }
11    }
12  }

Audit Logs

To help track internal activity 21 Travel Rule now has Audit Logs. This shows a full history of all actions committed in 21 Travel Rule. It will allow teams to see who did what, and will allow everyone to be on the same page when multiuser is implemented.

To query the Audit Logs you can use the following:

1query {
2  autod{
3    auditLogs(limit: 13, offset: 0){
4      username
5      event
6      target
7      createdAt
8    }
9  }
Which would yield the following results in a GUI:


AOPP has received a new GraphQL API. The websocket API has been deprecated. In the same way as the Satoshi Test method and the Visual Proof method mentioned above, you can use a requestAoppProof(proof) mutation. The subscription has also changed its name from newProofs to aopdAoppProofs.

Fuzzy Matching

You can now use fuzzy matching for received beneficiary names with expected ones according to the chosen sensitivity. This will use AI to accept a certain margin of error chosen by you when introducing beneficiary names.
The option to ignore cases was also added.

All this makes integration from external custodial systems a lot simpler since it allows more flexibility for inconsistencies that these might have.

Exports in Microsoft Excel

As requested by our customers, the table exports have been switched from .csv to .xlsx (Excel) format.
This can be achieved using the proofAsXlsx(id) for an individual proof export and proofsAsXlsx to export all proofs.

For transactions you can query txAsXlsx(id) for individual transactions or txsAsXlsx(status) for a list of all transactions under a certain status.

The buttons on the GUI remain the same.

TLS Client Certificate

TRP configuration now accepts a TLS client certificate. This allows TRP to use mTLS, ensuring that both the server and the client have strong proof about each other's identity, increasing trust. This addition completes our transition to the latest TRP 3.0 specification.

To add a TLS client certificate, you can use the GUI. First, go to the 'configure your VASP' page here; you will see the 'Attach PEM file' button to upload the PEM file that will generate the TLS client certificate.

xPub Support

The new AOPP API supports xPub submissions as part of the proof. This solves the deposit use case.

Other Improvements

  • TRP failed states yield more granular error messages.
  • GraphQL API now has more consistent naming.
  • GraphQL API inline documentation has improved.
  • The created/mutated object is now always returned in the GraphQL API.
  • Login has been factored out into its own app. This is a precondition for integrations with third party authentication solutions.
  • Travel Addresses are resolved and the result is displayed to the user on the fly on the new GUI.
  • General rebranding/design overhaul with customisable logo.
  • "Withdraw to Wallet" page has been redesigned, unifying the user interaction for different wallet types.
  • Integration for Oporto webextension has been implemented.
Just like our Travel Rule solution, our website also respects your privacy. That is why we don't use any tracking cookies.
Ok, nice!