Wallet address and transaction hash validation

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.accountId
  • counterparty.paymentMethod.accountId
  • info.paymentTxnId

You can send these values with the following methods:

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

ValueNetworkRule
Wallet addressEVM chainsMust 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 addressBitcoin, Litecoin, Dogecoin, Tron, SolanaMust be a valid address for the network. For example, a Bitcoin address must be a valid base58check or bech32 address.
Transaction hashEVM chains64 hexadecimal characters with an optional 0x prefix.
Transaction hashBitcoin, Litecoin, Dogecoin, Tron64 hexadecimal characters.
Transaction hashSolanaA base58 signature.
📘

Note

If 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>
PlaceholderDescription
<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.

ValueExample
EVM wallet address0x5cc17d0fa620FE99dAEAa87365C63b453BC47664
EVM transaction hash0xdd6364536f5f05cc1ea75709b676e2b1b37fad2792d3a71fb537db13100fc6b8
Bitcoin wallet addressbc1q080rkmk3kj86pxvf5nkxecdrw6nrx3zzy9xl7q