# Payment Methods
# Introduction
Sum&Substance provides functionality for receiving documents related to payments and analyzes the information provided.
We currently work with the following types of documents:
- Bank cards
- Wire transfers
- Crypto wallets
- eWallets
You can see how to set up the necessary steps in our dashboard.
# Adding payment method
Adding a payment method is done in 2 steps:
- Adding information about the method
- Adding an image (if necessary)
# Adding information about the payment method
POST /resources/applicants/{applicantId}/paymentMethods
# REQUEST ARGUMENTS
Name | Type | Required | Description |
---|---|---|---|
#{body} | Object | Yes | An object representing a payment method (see example) |
# body
ATTRIBUTE
Name | Type | Required | Description |
---|---|---|---|
type | String | Yes | bankCard , eWallet , wireTransfer or cryptoWallet |
subType | String | No | VISA , MASTERCARD , BTC , ... |
data | String | No | An object representing a payment method to compare with data from the end user |
# RESPONSE
Name | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the payment method |
type | String | Yes | bankCard , eWallet , wireTransfer or cryptoWallet |
subType | String | No | VISA , MASTERCARD , BTC , ... |
# Example request
curl -X POST \
'https://test-api.sumsub.com/resources/applicants/5d44a8600a975a13658b49a5/paymentMethods' \
-H 'Content-Type: application/json' \
-d '{"type":"bankCard","subType":"VISA","data":{"requiredIdDoc":{"firstName":"James","lastName":"Bond","number":"4276387313"}}}'
# Example response
{
"id": "5d44a87a0a975a27bc5c9440",
"type":"bankCard",
"subType":"VISA",
"data": {
"requiredIdDoc": {
"firstName":"James",
"lastName":"Bond",
"number":"4276387313"
}
}
}
# Adding an image
POST /resources/applicants/{applicantId}/paymentMethods/{paymentMethodId}/images
# REQUEST HEADERS
Name | Type | Value |
---|---|---|
Content-Type | String | multipart/form-data |
# FORM DATA
Name | Type | Required | Description |
---|---|---|---|
content | Binary | Yes | A photo of a document |
# RESPONSE
JSON representing added document information.
# Example request
curl -X POST \
'https://test-api.sumsub.com/resources/applicants/5d44a8600a975a13658b49a5/paymentMethods/5d44a87a0a975a27bc5c9440/images' \
-H 'Content-Type: multipart/form-data' \
-F '[email protected]/SumSub/Example/name.jpg'
# Requesting additional payment method
If you intend to request more than one payment method it's better to consider using applicant actions.
If the user has already uploaded a document and you want to ask them to upload another document, you need to perform such a request:
POST /resources/applicants/{applicantId}/paymentMethods
# REQUEST ARGUMENTS
Name | Type | Required | Description |
---|---|---|---|
#{body} | Object | Yes | An object representing a payment method (see example) |
# body
ATTRIBUTE
Name | Type | Required | Description |
---|---|---|---|
type | String | Yes | bankCard , eWallet , wireTransfer |
subType | String | No | VISA , MASTERCARD , UnionPay , ... |
data | String | Yes | An object representing a payment method. requiredIdDoc contains information for comparison with data from the end user. |
# RESPONSE
JSON representing added document information.
Name | Description |
---|---|
number/address | Number/address of crypto wallet |
checkType | Type of check |
riskScore | Risk score of crypto wallet |
# Example request
curl -X POST \
'https://test-api.sumsub.com/resources/applicants/5d4170f80a975a4f3b241e18/paymentMethods' \
-H 'Content-Type: application/json' \
-d '{"type":"bankCard","subType":"VISA","data":{"requiredIdDoc":{"firstName":"James","lastName":"Bond","number":"4757380076"}}}'
# Getting information about payment methods
# Example response (you can get this info using method)
{
"id": "5eec7a4f20611167bfa4b81b",
"createdAt": "2020-06-19 08:41:51",
"clientId": "client_id",
"inspectionId": "5eec7a4f20611167bfa4b81c",
"externalUserId": "external_user_id",
"info": {
"firstName": "URSEL",
"firstNameEn": "URSEL",
"lastName": "SMITH",
"lastNameEn": "SMITH",
"country": "DEU",
"paymentInfo": {
"reviewResult": null,
"paymentMethods": [
{
"id": "5eec7cc420611167bfa4e1da",
"type": "bankCard",
"subType": "VISA",
"createdAt": "2020-06-19 08:52:20",
"data": {
"firstName": "URSEL",
"lastName": "SMITH",
"validUntil": "2020-11-30",
"number": "4906389002"
},
"imageIds": [
"1011765502",
"202122173"
],
"reviewResult": {
"reviewAnswer": "GREEN"
},
"trackingData": {
"ip": "2a02:8108:3dbf:fb3d:fc93:1929:e884:b82e",
"userAgent": "Mozilla/5.0 (Linux; Android 10; SM-A505FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36",
"xClientId": "WebSDK",
"deviceFingerprint": "5213dac5bf79b080adca12deed571868",
"sessionId": "0501050511907110205373640830410310153736078036024_zy30495bb"
},
"checks": [
{
"id": "5eec7f843cc1813469575815",
"answer": "GREEN",
"checkType": "bankCardRiskScore",
"inputData": {
"firstName": "URSEL",
"lastName": "SMITH",
"validUntil": "2020-11-30",
"number": "4906389002"
},
"bankCardRiskScoreInfo": {
"riskScore": 0.0245,
"ipRiskScore": 1.0E-4,
"crossCheck": null,
"nameMatch": "GREEN",
"countryMatch": "GREEN",
"highRiskEmailCheck": "GREEN",
"countryIpMatch": "GREEN",
"ipCountry": "DEU",
"emailFirstSeenAt": "2020-06-19 00:00:00",
"binInfo": {
"bin": null,
"brand": "Visa",
"issuer": "BARCLAYS BANK PLC",
"type": "credit",
"category": null,
"country": "DEU",
"bankUrl": null,
"lat": null,
"lon": null
},
"freeEmail": true
},
"createdAt": "2020-06-19 09:04:04"
}
]
}
]
}
},
"email": "[email protected]",
"env": "ru-api",
"applicantPlatform": "Android",
"requiredIdDocs": {
"docSets": [
{
"idDocSetType": "PAYMENT_METHODS",
"types": [
"PAYMENT_METHOD"
]
}
]
},
"review": {
"elapsedSincePendingMs": 757859,
"elapsedSinceQueuedMs": 212277,
"reprocessing": true,
"createDate": "2020-06-19 08:52:50+0000",
"reviewDate": "2020-06-19 09:05:28+0000",
"startDate": "2020-06-19 09:01:56+0000",
"reviewResult": {
"reviewAnswer": "GREEN"
},
"reviewStatus": "completed",
"notificationFailureCnt": 0
},
"lang": "en",
"type": "individual"
}
# Standalone crypto analysis
It's better to create an applicant action or request a payment method to perform the crypto check for particular applicants. But if there is no way to bind a crypto transaction to an applicant then you should use standalone methods.
# Crypto source of funds
POST /resources/standalone/crypto/cryptoSourceOfFunds
# REQUEST BODY
Name | Type | Required | Description |
---|---|---|---|
currency | String | Yes | BTC , ETH , BCH , LTC |
direction | String | Yes | withdrawal or deposit |
txn | String | Yes | Transaction hash |
address | String | Yes | Target address hash |
# Example request
curl -X POST \
'https://test-api.sumsub.com/resources/standalone/crypto/cryptoSourceOfFunds' \
-H 'Content-Type: application/json' \
-d '{
"direction": "deposit",
"txn": "cb68af8c91b6e8ac284f7370effd176f13c62f79c8e8fb6b2f890e802f5dd191",
"address": "1JWF1vJyyxxWJ27T9G3kStyFUGp47hvKiP",
"currency": "BTC"
}’
# Example response
{
"data": {
"address": "1JWF1vJyyxxWJ27T9G3kStyFUGp47hvKiP",
"txn": "cb68af8c91b6e8ac284f7370effd176f13c62f79c8e8fb6b2f890e802f5dd191",
"time": "2019-10-08 14:33:27",
"updatedAt": "2020-10-23 06:39:15",
"amount": 643000000,
"fiat": 5285897,
"fiatCode": "usd",
"direction": "deposit",
"riskscore": 0.284,
"signals": {
"atm": 0.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.0,
"marketplace": 0.0,
"miner": 0.008,
"mixer": 0.01,
"payment": 0.021,
"ransom": 0.0,
"scam": 0.001,
"stolen_coins": 0.014,
"trusted_exchange": null,
"wallet": 0.011
},
"status": "ready",
"riskyVolume": 7.626584867075664E7,
"riskyVolumeFiat": 626957.0
}
}
# Signals attributes
Shows current percentage of transactions/exchanges with particular connexions.
Name | Description |
---|---|
exchange_mlrisk_low | Exchange With Low ML Risk |
exchange_mlrisk_moderate | Exchange With Moderate ML Risk |
marketplace | Marketplace |
miner | Mined Coins |
payment | Payment Processor |
wallet | Online Wallet |
atm | ATM |
exchange_fraudulent | Fraudulent Exchange |
exchange_mlrisk_high | Exchange With High ML Risk |
exchange_mlrisk_veryhigh | Exchange With Very High ML Risk |
ransom | Ransom |
dark_market | Darknet Marketplace |
dark_service | Darknet Service |
gambling | Gambling |
illegal_service | Illegal Service |
mixer | Mixing Service |
scam | Scam |
stolen_coins | Stolen Coins |