Monero addresses come in three shapes, and the differences are not cosmetic. Which one you hand out determines whether your payment gets routed correctly, whether the sender can attach a reference, and how much of your receiving activity stays separated. The prefixes tell you which is which, but two of the three start with the same character, so the details matter.
Primary addresses: the 4 prefix
A primary address starts with the number 4 and is 95 characters long. It is created with the wallet and there is exactly one per wallet. Think of it as the wallet’s main account. Everything the wallet receives can be viewed from it, and in the official GUI it is the address shown on the Receive page by default.
There is nothing wrong with using your primary address for everything, and plenty of long-time users do exactly that. The trade-off is incoming payment separation: Monero has no address labels natively, so two payers sending to your primary address are indistinguishable from the receiving side without more work. If you invoice ten clients in a month and they all pay the same string, matching payments to invoices means relying on amounts and timing.
Subaddresses: also 8, also 95 characters
Subaddresses start with the number 8 and are also 95 characters. This is where confusion starts, because the third type also starts with 8. A subaddress is generated deterministically from your wallet, in effect a derived receiving alias. You can create as many as you want, give one per counterparty, and every balance sent to any of them lands in the same wallet. In the official wallet, the Account mechanism groups subaddresses, so you can keep a “Client A” account, a “Mining” account and a “Market purchases” account, each with its own set of addresses and its own balance view.
The practical wins are bookkeeping and unlinkability from the sender’s side. Two senders who each received a different subaddress cannot tell, from the chain, that they paid the same entity. Within your wallet, each subaddress label tells you who paid. The catches: never send funds from a subaddress in a way that exposes it as a change source if you care about the separation, and never reuse the same subaddress with two different counterparties, since that re-links them. The separation is only as good as your discipline.
Integrated addresses: 8 again, but 106 characters
An integrated address is a primary address fused with a short payment ID, and it starts with 8 like a subaddress. The tell is the length: 106 characters instead of 95. The payment ID baked inside is 64 bits, which is enough to tag an expected payment without the sender needing to type anything extra. When the sender pays an integrated address, the ID travels with the transaction and your wallet matches it automatically.
Integrated addresses mostly matter for exchanges and services crediting customer accounts, and for old-style payment matching. If you are an individual user, subaddresses do the same job more cleanly. One caution that trips people up: a payment ID, even encoded inside an integrated address, is visible to the recipient’s wallet but must not be treated as proof of anything to third parties. And never confuse the three when moving funds between exchanges: pasting a 106-character integrated address into a field that expects a subaddress, or vice versa, will sometimes validate, sometimes not, and is never the exchange’s fault when support is slow.
A quick identification routine
When someone sends you a Monero address, check two things: the first character and the length. Starts with 4 and 95 characters: a primary address. Starts with 8 and 95 characters: a subaddress. Starts with 8 and 106 characters: an integrated address with a payment ID attached. If the string fails any of those patterns, or contains characters outside the Base58 set Monero uses, stop and ask for it again rather than “fixing” it by hand. Retyped addresses are how funds get lost.
Restores and the three address types
Restoring a wallet from its seed regenerates every primary address, subaddress and integrated address the wallet ever created, because all of them are derived mathematically from the seed rather than stored separately. This is worth knowing before you panic after a reinstall: an old subaddress you handed out two years ago still works after a restore, and payments sent to it will appear once the wallet resynchronises. The wallet file caches the account and label structure, but the addresses themselves are a function of the seed. If you relied on a separate wallet file’s saved labels, that organization layer is what you lose when only the seed survives, so exporting labels periodically is cheap insurance.
A related practical note: exchanges that credit Monero deposits generally accept any of the three types, but the deposit address they give you is an integrated address or subaddress specific to your account, and reusing it is expected there because it is theirs, not yours. The one-per-counterparty rule applies to addresses you generate in your own wallet.
Which one should you hand out?
For everyday receiving, generate a fresh subaddress per counterparty or per invoice and label it in the wallet. Keep the primary address for cases where a service or person demands “your” address and subaddress support looks shaky, and treat integrated addresses as an exchange-era compatibility feature. The official GUI and CLI both handle all three types natively, so the only real failure mode is human: mixing them up, reusing one subaddress across unrelated payers, or assuming an 8 prefix always means the same thing. It does not. Count the characters.