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.
Field | Type | Description |
---|---|---|
id | String | Unique action identifier that correlates to the actionId in the Sumsub system. |
createdAt | Date | Date and time when the action was created. |
applicantId | String | Unique applicant identifier in the Sumsub system. |
type | String | Indicates that the action is of the cryptoTransaction type. |
review | Object | Represents a review answer with additional information. |
paymentChecks | Array of objects | Includes the details of the payment checks performed within the action. |
input | Object | Includes the cryptoTxnInfo object that represents the input data provided within a transaction. |
reviewResult | Object | Contains extra details of the total applicant action check results. |
review
attributes
review
attributesThe following table explains the review
object attributes.
Field | Type | Description |
---|---|---|
reviewResult | Object | Contains extra details of the review result. |
reviewStatus | String | Indicates the applicant action review status. |
paymentChecks
element fields
paymentChecks
element fieldsThe following table explains the details of the payment checks performed within the action.
Field | Type | Description |
---|---|---|
id | String | Unique payment check identifier. |
answer | String | Indicates the payment check result (GREEN , RED , ERROR ). |
checkType | String | Indicates this is the cryptoSourceOfFundsRiskScore payment check type. |
cryptoTxnRiskScoreInfo | Object | Includes the information regarding the transaction risk score. |
createdAt | Date | Date and time the payment check was performed. |
cryptoTxnRiskScoreInfo
attributes
cryptoTxnRiskScoreInfo
attributesThe following table explains the cryptoTxnRiskScoreInfo
attributes that hold the information regarding the transaction risk score.
Field | Type | Description |
---|---|---|
riskScore | Double | Total risk score of the transaction. |
txnMonitorData | Object | Transaction details and information related to the transaction risk score. |
txnMonitorData
attributes
txnMonitorData
attributesThe following table explains the transaction details and information related to the transaction risk score.
Field | Type | Description |
---|---|---|
address | String | Target address hash. |
txn | String | Transaction hash. |
time | Date | Date and time when the check started according to the answer from Crystal (our established partner). |
updatedAt | Date | Date 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. |
amount | Double | Amount of funds sent within a transaction (in a currency used by an applicant). |
fiat | Double | Amount of funds in a fiat currency. |
fiatCode | String | Alpha code (ISO 4217) of the fiat currency. |
direction | String | Operation type of the transaction: withdrawal or deposit . |
riskscore | Double | Transaction risk score. |
signals | Object | A 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. |
status | String | Check status that was received from Crystal:
|
riskyVolume | Double | Risky funds amount within the transaction. |
riskyVolumeFiat | Double | Risky funds amount within the transaction in the fiat currency. |
signals
attributes
signals
attributesAttributes in signals
show the current percentage of transactions/exchanges with particular connections.
Signal name | Description |
---|---|
atm | Cryptocurrency ATM operator. |
child_exploitation | Organization which operates via darknets and is suspected of child abuse and exploitation. |
dark_market | Online marketplace which operates via darknets and is used for trading illegal products for cryptocurrency. |
dark_service | Organization which operates via darknets and offers illegal services for cryptocurrency. |
enforcement_action | The entity is a subject to legal proceedings. Jurisdiction will be annotated as a subtype. |
exchange_fraudulent | Exchange that was involved in illegal activity. |
exchange_licensed | Organization that is licensed to provide exchange services. |
exchange_unlicensed | Organization that is not licensed to provide exchange services. |
gambling | Online resource offering gambling services using cryptocurrency. |
illegal_service | Resource offering illegal services or engaged in illegal activities. |
liquidity_pools | Smart contracts where tokens are locked for the purpose of providing liquidity. |
marketplace | Entity offering legal services/trading goods for cryptocurrency. |
miner | Organization which utilizes its computing power for mining cryptocurrency blocks. |
mixer | Service for mixing funds from different sources to make tracing them back harder or almost impossible. It is mostly used for money laundering. |
p2p_exchange_licensed | Organization that is licensed to provide P2P exchange services. |
p2p_exchange_unlicensed | Organization that is not licensed to provide P2P exchange services. |
payment | Service which acts as an intermediary between customers and the company which provides services for making a payment. |
ransom | Extortioners demanding payment in the form of cryptocurrency. |
sanctions | Organization that is found in sanctions lists. |
scam | Entities that have scammed their customers and taken possession of their cryptocurrency. |
seized_assets | In the crypto seized by the government, the default Risk Score is 0%. |
stolen_coins | Entities which have taken possession of someone else’s cryptocurrency by hacking. |
terrorism_financing | Organization which operates via darknets and is involved in terrorism financing with cryptocurrency. |
wallet | Service for storage and making payments with cryptocurrency. |
other | None of the specified entities above. It may include a subtype. |
input.cryptoTxnInfo
attributes
input.cryptoTxnInfo
attributesThe following table represents the input data provided within a transaction.
Field | Type | Description |
---|---|---|
currency | String | Code of the currency (for example, BTC , ETH ) in which the transaction is made. |
txn | String | Transaction hash. |
address | String | Target address hash. |
direction | String | Operation type of the transaction: withdrawal or deposit . |
reviewResult
attributes
reviewResult
attributesThe following table explains the reviewResult
attributes representing the check result details.
Field | Type | Description |
---|---|---|
reviewAnswer | String | Explains the verification step review result.
|
moderationComment | String | A human-readable comment that explains the reasons for rejection, and that can be shown to the applicant. |
clientComment | String | A human-readable comment that explains the reasons for rejection, and that must not be shown to the applicant. |
reviewRejectType | String | Indicates the type of rejection.
|
rejectLabels | Array of strings | Includes 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"
}
}