How to prove you own a crypto wallet
Updated:
Sign a plain-text message with the wallet's key, then share three things: the address, the exact message and the signature. Anyone can check the signature without your private key, and no funds move. If your wallet cannot sign messages, the common alternative is a small test transfer of an amount set by the party asking.
Why you may be asked
Banks and exchanges reviewing your source of funds often want to know that the wallet in your paper trail is yours. Coinbase, for example, says it may request additional information to verify that you control a self-custody wallet.
In the EU there is also a legal rule. Regulation (EU) 2023/1113, the Transfer of Funds Regulation, applies from 30 December 2024. For a transfer of more than EUR 1,000 to a self-hosted address, the crypto-asset service provider of the sender "shall take adequate measures to assess whether that address is owned or controlled by the originator" (Article 14(5)). Article 16(2) sets the same duty for the receiving provider when more than EUR 1,000 arrives from a self-hosted address.
The European Banking Authority's Travel Rule Guidelines (EBA/GL/2024/11, paragraph 83) list the methods a provider should use, at least one of:
- unattended or attended remote verification, as in the EBA's remote onboarding guidelines
- sending a predefined amount, preferably the smallest denomination of the crypto-asset, set by the provider, from and to the self-hosted address
- asking the customer to digitally sign a specific message with the key for that address
- other suitable technical means, as long as the provider is fully satisfied it knows who owns or controls the address
Where one method is not reliable enough on its own, providers should combine them (paragraph 85). Once satisfied, a provider may whitelist the address for later transfers (paragraph 86).
Ethereum and EVM chains: EIP-191 personal_sign
On Ethereum and EVM chains, wallets sign plain-text messages with the personal_sign method, defined as version 0x45 in EIP-191 (status: Final). The signed data starts with the prefix "Ethereum Signed Message" and the message length, followed by your text. EIP-191 states that data signed this way "can never be an Ethereum transaction". Signing it does not authorize a transfer.
How to do it:
- Open your wallet's "sign message" feature, or a page that requests a signature, such as the Sign Message option on Etherscan's Verified Signatures page.
- Paste your message. Check that the wallet shows the same readable text.
- Approve. Copy the signature, a long hex string starting with
0x.
If your address is a smart contract wallet rather than a normal key-based account, signatures are checked differently (ERC-1271, as noted in EIP-4361), and not every verification tool supports this.
Bitcoin: signmessage, BIP-137 and BIP-322
Bitcoin has more than one message signing format, and which one works depends on your address type.
- Legacy signmessage. Bitcoin Core's
signmessagesigns a message with the private key of an address;verifymessagetakes the address, the base64 signature and the message. BIP-322 notes that this original standard only works for P2PKH addresses, the ones starting with1. - BIP-137 (status: Deployed) extends the same 65-byte format to SegWit addresses (P2SH-P2WPKH and P2WPKH). The BIP itself warns that some software reports the newer header types as errors, and points to BIP-322 as the newer scheme.
- BIP-322 (status: Complete) is the generic signed message format. Its simple format covers P2WPKH, P2WSH and P2TR (Taproot) addresses, and its full format covers any script.
In practice: sign with your wallet's "sign message" feature, note which format it used, and ask the verifier which formats it accepts.
How someone checks a signature
For EVM addresses, Etherscan's Verified Signatures page at etherscan.io/verifiedSignatures has a Verify Signature option. Enter the address, the message and the signature hash. Choose "Signature Verification only (not published)" unless you want the signature on a public URL; the other option, "Verify & publish", makes it public.
For Bitcoin, the verifier uses a tool that supports your signature format, for example verifymessage in Bitcoin Core for legacy addresses.
Write a message that proves something specific
A good message ties the address to you, to a recipient and to a date, so it cannot be reused elsewhere. For example:
"I, Jane Doe, control the address 0x1234...abcd. This statement is for Example Bank, reference 55-123, on 7 November 2026."
Use the exact address, and copy the message character for character when you send it. One changed space makes the check fail.
Satoshi test as an alternative
If signing is not possible, the EBA guidelines list a test transfer: a predefined small amount, set by the provider, sent from and to the self-hosted address to the provider's account. It costs a network fee. Only make a test transfer when the request appears inside your account on the provider's official site.
What not to do: checklist
- Never share your seed phrase, recovery phrase or private key. Coinbase and Kraken both say they will never ask for your recovery phrase.
- Never sign a transaction or token approval you do not understand. A message signature should show readable text in your wallet. If it shows a transaction, an approval or unreadable data, stop.
- Never move funds to an address sent in an unsolicited message. Kraken says it will never ask you to move funds to another address.
- Do not publish a signature unless you mean to. On Etherscan, choose the verify-only option.
- Do not reuse an old signature for a new request. Sign a fresh message with today's date and the recipient's name.
Proof of control is usually one part of a larger file. See what to send when your bank asks for source of funds, documents for an exchange account on hold and crypto as a mortgage deposit.
How Fundsheet helps
Fundsheet lets you prove control of an EVM address by signing a plain-text message in your wallet with personal_sign (EIP-191); it authorizes no transaction. For Bitcoin, you can paste a signed message. The proof goes into a bank-style wallet statement PDF built from public blockchain data, with every transfer, its value at the time, and a report ID, SHA-256 hash and verification page. It is a factual record, not a legal opinion; the bank or exchange decides. Start at fundsheet.mintward.xyz.
This guide is general information, not legal or tax advice. Ask your bank or exchange which documents and signature formats it accepts.
Sources
- Regulation (EU) 2023/1113 on information accompanying transfers of funds and certain crypto-assets (EUR-Lex)
- Travel Rule Guidelines, EBA/GL/2024/11 (European Banking Authority)
- EIP-191: Signed Data Standard (Ethereum Improvement Proposals)
- EIP-4361: Sign-In with Ethereum (Ethereum Improvement Proposals)
- BIP-137: Signatures of Messages using Private Keys (Bitcoin BIPs, GitHub)
- BIP-322: Generic Signed Message Format (Bitcoin BIPs, GitHub)
- signmessage RPC and verifymessage RPC (Bitcoin Developer Documentation)
- Verified Signatures (Etherscan)
- Provide information for an account review (Coinbase Help)
- Responding to a request for additional information (Kraken Support)