Create actions with crypto transaction data

Creates an action to check crypto transactions and e-wallets.

Table of contents

Overview

Use this endpoint to create an applicant action with information about the crypto transaction issued for the specified applicant.

With this method, you can check both transactions (for deposits) and e-wallets (for withdrawals). The created action is checked and gets either approved or rejected right away, bypassing the pending status, therefore no verification level configuration is required.

Upon a successful request, you will receive a response that includes the available transaction data and check results.

📘

Note

If it is impossible to bind a crypto transaction to an applicant, use the standalone method for crypto analysis.

Request examples

The examples of the request payload to check a deposit transaction where no tokenId is required.

curl -X POST \
  'https://api.sumsub.com/resources/applicantActions/-/forApplicant/5f905c29e971ff53e5ec79e5/cryptoSourceOfFunds' \
     -H 'Content-Type: application/json' \
     -d '{
            "direction": "deposit",
            "txn": "cb68af8c91b6e8ac284f7370effd176f13c62f79c8e8fb6b2f890e802f5dd191",
            "address": "1JWF1vJyyxxWJ27T9G3kStyFUGp47hvKiP",
            "currency": "BTC"
         }’
curl -X POST \
  'https://api.sumsub.com/resources/applicantActions/-/forApplicant/5f905c29e971ff53e5ec79e5/cryptoSourceOfFunds' \
     -H 'Content-Type: application/json' \
     -d '{
            "direction": "deposit",
            "txn": "29a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf",
            "address": "1P3S1grZYmcqYDuaEDVDYobJ5Fx85E9fE9",
            "currency": "BSV"
          }'

The examples of the request payload to check a deposit transaction where you need to specify the tokenId.

curl -X POST \
  'https://api.sumsub.com/resources/applicantActions/-/forApplicant/5f905c29e971ff53e5ec79e5/cryptoSourceOfFunds' \
     -H 'Content-Type: application/json' \
     -d '{
            "direction": "deposit",
            "txn": "0x1087be99d867e5e68120a3ce464661596680ded3158c7257773c03fc1bc6e351",
            "address": "0x9f8622b11984afc8f0a42a394928702017c5968d",
            "currency": "ETH",
            "tokenId": "172805"
          }'
curl -X POST \
  'https://api.sumsub.com/resources/applicantActions/-/forApplicant/5f905c29e971ff53e5ec79e5/cryptoSourceOfFunds' \
     -H 'Content-Type: application/json' \
     -d '{
            "direction": "deposit",
            "txn": "0x977dc0c94334340a86ed7591defbfce7bbca30a0290ebf60b96388c4e56c5741",
            "address": "0xe81c65a55d60021c8bd0dc269ed2732780b5d238",
            "currency": "ERC-20",
            "tokenId": "OMGToken"
         }’

The example of the request payload in case you need to check a crypto wallet (for withdrawals) rather than a transaction.

curl -X POST \
  'https://api.sumsub.com/resources/applicantActions/-/forApplicant/5f905c29e971ff53e5ec79e5/cryptoSourceOfFunds' \
     -H 'Content-Type: application/json' \
     -d '{
            "direction": "withdrawal",
            "address": "1JWF1vJyyxxWJ27T9G3kStyFUGp47hvKiP",
            "currency": "BTC"
         }’

Response explained

The response is a JSON file that represents the structured information of the created action.

📘

Note

The obtained JSON file already includes the action review results, so you do not need to request a check for this action.

Root variables

The root variables are the core data items of the created action and check result. Some of the items may include nested attributes and element fields.

FieldTypeDescription
idStringUnique action identifier that correlates to the actionId in the Sumsub system.
createdAtDateDate and time when the action was created.
applicantIdStringUnique applicant identifier in the Sumsub system.
typeStringIndicates that the action is of the cryptoTransaction type.
reviewObjectRepresents a review answer with additional information.
paymentChecksArray of objectsIncludes the details of the payment checks performed within the action.
inputObjectIncludes the cryptoTxnInfo object that represents the input data provided within a transaction.
reviewResultObjectContains extra details of the total applicant action check results.

review attributes

The following table explains the review object attributes.

FieldTypeDescription
reviewResultObjectContains extra details of the review result.
reviewStatusStringIndicates the applicant action review status.

paymentChecks element fields

The following table explains the details of the payment checks performed within the action.

FieldTypeDescription
idStringUnique payment check identifier.
answerStringIndicates the payment check result (GREEN, RED, ERROR).
checkTypeStringIndicates this is the cryptoSourceOfFundsRiskScore payment check type.
cryptoTxnRiskScoreInfoObjectIncludes the information regarding the transaction risk score.
createdAtDateDate and time the payment check was performed.

cryptoTxnRiskScoreInfo attributes

The following table explains the cryptoTxnRiskScoreInfo attributes that hold the information regarding the transaction risk score.

FieldTypeDescription
riskScoreDoubleTotal risk score of the transaction.
txnMonitorDataObjectTransaction details and information related to the transaction risk score.

txnMonitorData attributes

The following table explains the transaction details and information related to the transaction risk score.

FieldTypeDescription
addressStringTarget address hash.
txnStringTransaction hash.
timeDateDate and time when the check started according to the answer from Crystal (our established partner).
updatedAtDateDate and time when the check result was updated according to the answer from Crystal. The result can be updated if it was not instantly received due to asynchronous requests.
amountDoubleAmount of funds sent within a transaction (in a currency used by an applicant).
fiatDoubleAmount of funds in a fiat currency.
fiatCodeStringAlpha code (ISO 4217) of the fiat currency.
directionStringOperation type of the transaction: withdrawal or deposit.
riskscoreDoubleTransaction risk score.
signalsObjectA set of the entity types the transaction may belong to. For example, Darknet Service, Gambling, Online Marketplace, and so on.

Attributes in signals show the current percentage of transactions/exchanges with particular connections.
statusStringCheck status that was received from Crystal:
  • ready — all values are calculated.
  • pending — the transaction is in the mempool.
  • updating — the values are being calculated.
  • missed — was not found in Crystal databases.
  • failed — the transaction failed.
  • new — the transfer has not been processed by Crystal servers yet due to high workload. This transfer will be processed soon.
riskyVolumeDoubleRisky funds amount within the transaction.
riskyVolumeFiatDoubleRisky funds amount within the transaction in the fiat currency.

signals attributes

Attributes in signals show the current percentage of transactions/exchanges with particular connections.

Signal nameDescription
atmCryptocurrency ATM operator.
child_exploitationOrganization which operates via darknets and is suspected of child abuse and exploitation.
dark_marketOnline marketplace which operates via darknets and is used for trading illegal products for cryptocurrency.
dark_serviceOrganization which operates via darknets and offers illegal services for cryptocurrency.
enforcement_actionThe entity is a subject to legal proceedings. Jurisdiction will be annotated as a subtype.
exchange_fraudulentExchange that was involved in illegal activity.
exchange_licensedOrganization that is licensed to provide exchange services.
exchange_unlicensedOrganization that is not licensed to provide exchange services.
gamblingOnline resource offering gambling services using cryptocurrency.
illegal_serviceResource offering illegal services or engaged in illegal activities.
liquidity_poolsSmart contracts where tokens are locked for the purpose of providing liquidity.
marketplaceEntity offering legal services/trading goods for cryptocurrency.
minerOrganization which utilizes its computing power for mining cryptocurrency blocks.
mixerService for mixing funds from different sources to make tracing them back harder or almost impossible. It is mostly used for money laundering.
p2p_exchange_licensedOrganization that is licensed to provide P2P exchange services.
p2p_exchange_unlicensedOrganization that is not licensed to provide P2P exchange services.
paymentService which acts as an intermediary between customers and the company which provides services for making a payment.
ransomExtortioners demanding payment in the form of cryptocurrency.
sanctionsOrganization that is found in sanctions lists.
scamEntities that have scammed their customers and taken possession of their cryptocurrency.
seized_assetsIn the crypto seized by the government, the default Risk Score is 0%.
stolen_coinsEntities which have taken possession of someone else’s cryptocurrency by hacking.
terrorism_financingOrganization which operates via darknets and is involved in terrorism financing with cryptocurrency.
walletService for storage and making payments with cryptocurrency.
otherNone of the specified entities above. It may include a subtype.

input.cryptoTxnInfo attributes

The following table represents the input data provided within a transaction.

FieldTypeDescription
currencyStringCode of the currency (for example, BTC, ETH) in which the transaction is made.
txnStringTransaction hash.
addressStringTarget address hash.
directionStringOperation type of the transaction: withdrawal or deposit.

reviewResult attributes

The following table explains the reviewResult attributes representing the check result details.

FieldTypeDescription
reviewAnswerStringExplains the verification step review result.
  • GREEN — the action is approved.
  • RED — the action is rejected. See reviewRejectType for clarification.
moderationCommentStringA human-readable comment that explains the reasons for rejection, and that can be shown to the applicant.
clientCommentStringA human-readable comment that explains the reasons for rejection, and that must not be shown to the applicant.
reviewRejectTypeStringIndicates the type of rejection.
  • FINAL — final rejection in case of major violations. For example, the document data was modified, the document has been tampered with, and so on. If this is the case, you need to make a decision regarding the applicant on the basis of the rest data in the profile.
  • RETRY — temporary rejection in case of minor violations. For example, a screenshot was uploaded instead of a photo, part of the document is not visible, and so on. The applicant is sent a resubmission request to upload a new document or resubmit the correct data.
For more details, see Temporary rejection and Final rejection clarification.
rejectLabelsArray of stringsIncludes one or more reasons for rejection. The field is available if reviewAnswer returns RED.

For more details, see Temporary rejection and Final rejection clarification.

Response example

{
  "id": "5f927ff763619b175f15dbb9",
  "createdAt": "2020-10-23 07:02:15",
  "applicantId": "5f927fc063619b175f15dba5",
  "type": "cryptoTransaction",
  "review": {
    "reviewResult": {
      "reviewAnswer": "RED"
    },
    "reviewStatus": "completed"
  },
  "paymentChecks": [
    {
      "id": "5f927ff763619b175f15dbb8",
      "answer": "RED",
      "checkType": "cryptoSourceOfFundsRiskScore",
      "cryptoTxnRiskScoreInfo": {
        "riskScore": 0.284,
        "txnMonitorData": {
          "address": "1JWF1vJyyxxWJ27T9G3kStyFUGp47hvKiP",
          "txn": "cb68af8c91b6e8ac284f7370effd176f13c62f79c8e8fb6b2f890e802f5dd191",
          "time": "2019-10-08 14:33:27",
          "updatedAt": "2020-10-23 07:02:14",
          "amount": 643000000,
          "fiat": 5285897,
          "fiatCode": "usd",
          "direction": "deposit",
          "riskscore": 0.284,
          "signals": {
            "atm": 0,
            "dark_market": 0.037,
            "dark_service": 0.001,
            "exchange_fraudulent": 0.052,
            "exchange_mlrisk_high": 0.125,
            "exchange_mlrisk_low": 0.645,
            "exchange_mlrisk_moderate": 0.025,
            "exchange_mlrisk_veryhigh": 0.044,
            "exchange": null,
            "gambling": 0.002,
            "illegal_service": 0,
            "marketplace": 0,
            "miner": 0.008,
            "mixer": 0.01,
            "payment": 0.021,
            "ransom": 0,
            "scam": 0.001,
            "stolen_coins": 0.014,
            "trusted_exchange": null,
            "wallet": 0.011
          },
          "status": "ready",
          "riskyVolume": 76265848.67075664,
          "riskyVolumeFiat": 626957
        }
      },
      "createdAt": "2020-10-23 07:02:15"
    }
  ],
  "input": {
    "cryptoTxnInfo": {
      "currency": "BTC",
      "txn": "cb68af8c91b6e8ac284f7370effd176f13c62f79c8e8fb6b2f890e802f5dd191",
      "address": "1JWF1vJyyxxWJ27T9G3kStyFUGp47hvKiP",
      "direction": "deposit"
    }
  },
  "reviewResult": {
    "reviewAnswer": "RED"
  }
}
Language
Authorization
Header
Click Try It! to start a request and see the response here!