Sumsub checks the format of crypto wallet addresses and transaction hashes before it accepts a transaction.
When the check runs
The check runs when you create or update a transaction. It applies to the following fields:
applicant.paymentMethod.accountIdcounterparty.paymentMethod.accountIdinfo.paymentTxnId
You can send these values with the following methods:
- Submit transaction for existing applicants
- Submit transaction for non-existing applicants
- Submit transaction with async scoring
- Submit transaction with async scoring for non-existing applicant
- Patch transaction with chain transaction ID
- Update wallet address
How the network is determined
Sumsub takes the network from info.cryptoParams.cryptoChain.
For a native coin with an empty cryptoChain, the network is taken from info.currencyCode (for example, BTC for Bitcoin).
Checked networks
Sumsub checks the following networks:
- all EVM chains
- Bitcoin
- Litecoin
- Dogecoin
- Tron
- Solana
Values for other networks (for example, XRP or Stellar) are not checked.
Validation rules
| Value | Network | Rule |
|---|---|---|
| Wallet address | EVM chains | Must be 0x followed by 40 hexadecimal characters. A mixed-case address must have a valid EIP-55 checksum. An all-lowercase or all-uppercase address is accepted. |
| Wallet address | Bitcoin, Litecoin, Dogecoin, Tron, Solana | Must be a valid address for the network. For example, a Bitcoin address must be a valid base58check or bech32 address. |
| Transaction hash | EVM chains | 64 hexadecimal characters with an optional 0x prefix. |
| Transaction hash | Bitcoin, Litecoin, Dogecoin, Tron | 64 hexadecimal characters. |
| Transaction hash | Solana | A base58 signature. |
NoteIf you are not sure about the letter case of an EVM address, send it in lowercase. A lowercase address does not need a checksum.
Error response
If a value is invalid, the API returns the 400 error. The description has the following format. If several values are invalid, the problems are joined with a comma:
Invalid wallet data for network <network>: <field> <reason>, <field> <reason>
| Placeholder | Description |
|---|---|
<network> | The network name, for example, ethereum, bitcoin, tron, solana. All EVM chains are shown as ethereum. |
<field> | The field with the invalid value: applicant.paymentMethod.accountId, counterparty.paymentMethod.accountId, or info.paymentTxnId. |
<reason> | What is wrong with the value, for example, EIP-55 checksum mismatch. |
Example:
{
"description": "Invalid wallet data for network ethereum: applicant.paymentMethod.accountId EIP-55 checksum mismatch, info.paymentTxnId must be 64 hex characters with an optional 0x prefix",
"code": 400
}To fix the error, make sure that the wallet address and the transaction hash match the network from cryptoChain (or currencyCode for a native coin).
Valid values
The following are examples of valid wallet address and hash values.
| Value | Example |
|---|---|
| EVM wallet address | 0x5cc17d0fa620FE99dAEAa87365C63b453BC47664 |
| EVM transaction hash | 0xdd6364536f5f05cc1ea75709b676e2b1b37fad2792d3a71fb537db13100fc6b8 |
| Bitcoin wallet address | bc1q080rkmk3kj86pxvf5nkxecdrw6nrx3zzy9xl7q |