Transactions

Monitor and prevent fraudulent activities on time.

A transaction is an attempt of your applicants to commit a financial operation like a crypto transfer, deposit, or gambling bet.

Each time a transaction is created, it triggers a set of rules intended to verify its legitimacy and—depending on the rule configuration—perform such automatic actions as:

  • Assign a score to the give transaction.
  • Put the transaction on hold so that it can be processed by the dedicated compliance officer. All transactions that are put on hold receive the Requires action status and distributed to queues for manual review.
  • Mark the transaction as awaiting actions from the applicant.
  • Reject the transaction automatically.

In the Dashboard, a list of transactions is available on the Transactions page, which encompasses inbound and outbound transactions of your applicants.

Create transactions via API

The Sumsub API lets you send transactions individually or in bulk to consider and score them accordingly:

  • To send a single transaction via API, follow the recommendations provided in this article.
  • To send transactions in bulk, follow the recommendations provided in this article.

📘

Note

  • To create a Travel Rule transaction, set type to travelRule.
  • To create a gambling transaction, set type to gamblingBet or gamblingLimitChange.

Scenarios

Consider the following scenarios:

  • You want to prevent your applicants from getting money gifts from money launderers.
  • You want to ensure a safe environment while dealing with crypto transactions.

Let’s start with setting up a flow that will put all matched transactions on hold:

  1. In the Dashboard, go to the Rules page:
    1. From the AML bundle, select the Counterparty with potential AML hit rule, click Edit, assign the rule to your applicant source key, and set Put on hold as the rule action.
    2. From the Crypto bundle, select a suitable rule, click Edit, assign the rule to your applicant source key, and set Put on hold as the rule action.
  2. Create an API request to submit the transaction data:
    1. Finance. Prevents applicants from getting money gifts from money launderers.
    2. Crypto. Ensures a safe environment while dealing with crypto transactions.

📘

Mind the following when sending a Crypto transaction

To scan a transaction, we need its blockchain ID and the recipient address. That is, the following should be provided:

  • Your applicant address for an incoming transaction.
  • The counterparty address for an outgoing transaction.
curl -X POST \
  'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/kyt/txns/-/data' \
  -H 'Content-Type: application/json' \
  -d '{
        "txnId": "631f268442d8290001e1eee9_newTxn",
        "applicant": {
            "externalUserId": "uniqueRemitterId",
            "address": {
                "country": "DEU",
                "street": "Chauseestr. 60",
                "postCode": "101115",
                "town": "Berlin"
            },
            "device": {
                "ipInfo": {
                    "ip": "87.141.63.130"
                }
            },
            "institutionInfo": {
                "code": "DEUTDEDB101",
                "name": "Deutsche Bank"
            }
        },
        "counterparty": {
            "externalUserId": "uniqueBeneficiaryId",
            "fullName": "John Smith",
            "type": "individual",
            "institutionInfo": {
                "code": "CRESCHZZXXX",
                "name": "Credit Swiss (Schweiz)"
            }
        },
        "info": {
            "direction": "out",
            "amount": 101.42,
            "currencyCode": "GBP",
            "paymentDetails": "Birthday Present"
        },
        "props": {
            "customProperty": "Custom value that can be used in rules"
        }
    }'
curl -X POST \
  'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/kyt/txns/-/data' \
  -H 'Content-Type: application/json' \
  -d '{
    "sourceKey":"DemoCryptoTxn",
    "applicant":{
       "paymentMethod":{
          "type":"crypto",
          "accountId":"19jUgPvUdSLZyuJyaydcaTcbLYPgFuxoFb"
       },
       "device":{
          "fingerprint":"kqtyt7c0l",
          "ipInfo":{
             "ip":"87.141.63.130"
          }
       }
    },
    "counterparty":{
       "externalUserId":"shol1mq8xipghssepfhdht",
       "fullName":"Jack Posek",
       "type":"individual",
       "paymentMethod":{
          "type":"crypto"
       }
    },
    "info":{
       "direction":"in",
       "amount":2,
       "currencyCode":"BTC",
       "paymentTxnId":"84bf83c10dfddc9d1f0ea6a1a131c638488fb161e819dae25fd8128c671d2d5a",
       "paymentDetails":"Birthday Present"
    },
    "props":{
       "customProperty":"Custom value that can be used in rules",
       "dailyOutLimit":10000
    },
    "txnId":"kkw5mbtuozdwn13qrf9fj",
    "txnDate":"2023-09-19 14:19:06+0300"
  }'
  1. Set up a webhook that will notify you each time a transaction is put on hold. The webhook will look approximately like this:
{
  "applicantId": "634829375766b80001a40152",
  "applicantType": "individual",
  "correlationId": "98d4dac61c977c1b3f81d6ab78d29c3c",
  "sandboxMode": false,
  "externalUserId": "customExternalUserId",
  "type": "applicantKytOnHold",
  "reviewStatus": "onHold",
  "createdAtMs": "2022-10-24 12:44:32.341",
  "clientId": "rda_for_test",
  "kytTxnId": "j8bqz29yn491vksi9qfydw"
}

If the transaction counterparty has a potential match, the transaction will be put on hold and you or your risk team will be notified. If there is no match and no other rules are selected for this transaction, it will be automatically approved.

Now your experts need to check whether the transaction counterparty is a real money launderer or not:

  1. Go to the Queues page, open the Requires action (unassigned) queue, and find the target transactions (normally the transaction ID is included into the webhook).
  2. Select Assign and pick the assignee for the transaction.
  3. Let your expert analyze the transaction and the related case located on the AML cases page.
  4. If additional information, such as the transaction counterparty DoB is required, your expert will change the transaction status to Awaiting user and request the counterparty ID or other documents.
  5. If it is possible to understand whether the match is true or false based on the existing data, the expert will make a decision and manually change the transaction status to Approved or Declined.