Why your address doesn't look like theirs: address formats, and why sends fail

·6 min read·By SSP Editorial Team
SSP Academy cover: crypto address formats and failed sends

Why your address doesn't look like theirs: address formats, and why sends fail

Sooner or later everyone in self-custody hits the same confusing moment. You copy your receiving address to send yourself some Bitcoin, and it doesn't look like the addresses you've seen before. Or an exchange rejects it. Or you send Bitcoin Cash to something that looks exactly like a Bitcoin address and spend an unpleasant hour finding out what happened.

None of this is arbitrary. Address formats encode real information about how coins can be spent, and once you can read them the confusion mostly evaporates.

An address is a set of spending conditions

The useful mental model is not "an address is an account number." It's this: an address is a compressed description of what has to be true for these coins to move.

Send to an address beginning 1, and the condition is one specific public key must produce a signature. Send to a bc1q… address of the longer kind, and the condition might be two specific keys must both sign. Same chain, same money, entirely different rules — and the address format is how the chain tells you which rules apply.

That's why formats proliferated. Every time Bitcoin gained a new way of locking coins, it needed a new way of writing down where they were locked.

The formats you'll meet on Bitcoin

Legacy — 1… The original. Pay-to-public-key-hash: one key, one signature. Universally supported, and the most expensive to spend from, because the signature data counts fully against the block size.

Script — 3… Pay-to-script-hash. The coins are locked to a script rather than a key — a multisig quorum, a timelock, whatever. The address is a hash of the conditions, so from outside you cannot tell what they are. This is also how early SegWit was smuggled in for compatibility.

Native SegWit — bc1q… Bech32. Signature data moved into a separate witness structure, which made spending cheaper and fixed transaction malleability. Bech32 is lowercase, has a stronger checksum than base58, and is designed so that typos are detected rather than silently accepted.

Native SegWit comes in two lengths, and the difference matters:

  • 42 characters total — P2WPKH. One key, one signature.
  • 62 characters total — P2WSH. A script — for example a 2-of-2 multisig.

Taproot — bc1p… The newest. Better privacy and cheaper complex spends, at the cost of a few older services still not accepting it.

Why an SSP address looks unusual

Here is where people get surprised, and it has a satisfying explanation.

SSP is a 2-of-2 multisig wallet. Your coins aren't locked to a single key — they're locked to a script that requires signatures from both your browser extension and your phone. That means an SSP Bitcoin address is P2WSH, not P2WPKH, so it's the long bc1q form: 62 characters rather than the 42 most people are used to.

If you've been staring at your address thinking it looks too long, it is supposed to. The extra length is the hash of a 2-of-2 script instead of the hash of a single public key. The address is longer because the conditions are richer.

This occasionally trips up older services that only pattern-match the short form. It's a limitation on their side — P2WSH is a decade old — but it's worth knowing why the error happens, because the message is usually an unhelpful "invalid address."

Every chain made different choices

SSP supports several UTXO chains, and each one writes multisig addresses its own way:

ChainSSP script typeAddress looks like
BitcoinP2WSHbc1q… (62 chars)
LitecoinP2WSHltc1q…
Bitcoin CashP2SHbitcoincash:p…
DogecoinP2SHstarts 9 or A
ZcashP2SHt3…
RavencoinP2SHstarts r
FluxP2SHt3…

Litecoin followed Bitcoin's design closely and just changed the human-readable prefix, which is why its addresses look familiar. Zcash and Flux use a two-byte version, giving the distinctive t3 prefix for script addresses. Dogecoin picked its own version byte, so its script addresses begin with 9 or A — nothing like its familiar D… single-key addresses.

The important thing is that a chain's address prefixes are consensus-level constants, not branding. They're the reason a wallet can reject an address before you send anything.

The Bitcoin Cash trap, and why CashAddr exists

There's one piece of history worth knowing because it can actually cost you money.

When Bitcoin Cash forked from Bitcoin in 2017, it inherited Bitcoin's address format exactly — the same version bytes, 0x00 for key addresses and 0x05 for script addresses. A legacy BCH address and a legacy BTC address were indistinguishable. Not similar. Identical in structure.

People sent BTC to BCH addresses and BCH to BTC addresses, constantly, because no software could tell them apart. The coins weren't destroyed — the same private key controls both — but recovering them meant importing keys into a wallet for the other chain, which many users could not safely do.

CashAddr was the fix: a bech32-style format with a bitcoincash: prefix, deliberately incompatible with Bitcoin's so that sending across chains fails loudly instead of succeeding quietly. That's why SSP shows Bitcoin Cash addresses with the full prefix. It looks verbose. The verbosity is the feature.

Why sends fail, and what each failure means

"Invalid address." Usually a checksum failure — a typo, a truncated paste, a mixed-case bech32 string. Bech32 is case-insensitive but must not be mixed case; some copy-paste paths mangle this. Occasionally it means the sending service doesn't support your format.

"Unsupported address type." The service recognises the address but won't send to it — typically an older exchange that never added Taproot, or one that only handles short-form SegWit. Not your problem to fix; use a different withdrawal path or an intermediate address.

Wrong chain entirely. Bech32's human-readable prefix protects you here: bc1 and ltc1 are different, and wallets check. Base58 chains are riskier because a valid Dogecoin address is also structurally valid on several other chains.

It sent, but nothing arrived. Either you're looking at the wrong chain's explorer, or the funds went to a valid address that isn't yours. There is no recall.

The practical rules

Copy, never type. Every format has a checksum precisely because humans mistype. Don't make it do work it shouldn't have to.

Match the prefix to the chain before anything else. Bitcoin is bc1 or 1 or 3. Litecoin is ltc1 or L or M. Bitcoin Cash is bitcoincash:. This one glance catches the expensive mistakes.

Expect multisig addresses to be longer. If you're using SSP or any script-based wallet, the long form is correct. Length is not a symptom of an error.

Send a small test first when the destination is new, especially to an exchange, and especially for large amounts. The fee is trivial next to the alternative.

Use a fresh receiving address when your wallet offers one. Reusing addresses links your transactions together for anyone watching the chain. It costs nothing to avoid.

Address formats look like arbitrary trivia until you realise each one is a statement about how coins can move. Once you read them that way, receiving into your wallet stops being a leap of faith and becomes something you can actually check — which is the whole point of holding your own keys.

Share this article

Related articles