When you send crypto to a regulated entity (CEX, banking partner, custodian), the Travel Rule says originator and beneficiary information must travel with the transaction. The wallet's privacy-301 course covered this from the privacy-tool angle; this lesson covers it from the off-ramp angle.
What the Travel Rule requires
For a transfer above the threshold (€1000 EU, $3000 US), the sending VASP must include:
Originator: - Full name - Wallet address (the source) - Government ID OR address + DOB
Beneficiary: - Full name - Wallet address (the destination)
Transaction: - Amount - Asset - Timestamp
The data is sent as an IVMS 101 message (the inter-VASP standard).
How this affects you as an off-ramper
You're sending crypto from your self-hosted wallet (Gopnik) to a CEX deposit address. The CEX is the receiving VASP. Two scenarios:
Scenario A: Above-threshold (>€1000) to a CEX you've KYC'd at.
The CEX already knows who you are (from your KYC). They auto-fill the Travel Rule message with your registered name. You just send. The wallet's Travel Rule attestation system attaches the originator data automatically (if you've completed wallet KYC); if you haven't, you'll see a one-time onboarding form.
Scenario B: Above-threshold to a CEX you haven't yet KYC'd at.
The CEX will reject your deposit until you complete KYC. Some CEXes auto-freeze the deposit and let you complete KYC retroactively to claim it; others bounce it back (minus a fee).
The wallet's wallet > Send dashboard checks whether your destination is a known VASP-controlled address before broadcast. If it is, you get a "This is a VASP deposit address" notice + the Travel Rule attestation form inline.
IVMS 101 in practice
IVMS 101 is a structured JSON schema. A simplified version:
{
"version": "1.1.1",
"originator": {
"naturalPerson": {
"naturalPersonName": {"primaryIdentifier": "John Doe"},
"geographicAddress": [{"country": "DE"}]
},
"originatorAccount": {"type": "self-hosted", "chain": "ethereum"}
},
"beneficiary": {
"naturalPerson": {"naturalPersonName": {"primaryIdentifier": "Jane Smith"}},
"beneficiaryAccount": {"type": "vasp-hosted", "address": "0x...", "chain": "ethereum"}
},
"transaction": {
"asset": "ETH",
"amount_eur_cents": 500000,
"timestamp": "2026-05-20T14:30:00Z"
}
}
The wallet's gopnik/compliance/travel_rule.py (from iter-H) builds these. The signed bundle is persisted; a regulator can verify any send years later.
Self-hosted to self-hosted
If you send from Gopnik (self-hosted) to another self-hosted wallet (your friend's, your other wallet), the Travel Rule's strict requirements are softer in most jurisdictions:
- EU TFR: applies above €1000 even to self-hosted; the wallet records source-of-funds attestation but doesn't transmit it externally.
- US: 31 USC 5331 reporting threshold is $10000; below that minimal records.
- UK: similar to EU but specific UK Money Laundering Regulations apply.
For privacy primitive sends (iter-H stealth/Aztec/Penumbra), the wallet enforces strict-mode Travel Rule attestation regardless of jurisdiction — see the privacy review doc.
When the receiving VASP doesn't accept Travel Rule from your wallet
Some CEXes don't have IVMS 101 ingestion integrated. Their workflow:
- You deposit; they auto-credit your CEX account.
- They KYC re-checks at withdrawal time: "where did the deposit come from?"
- You provide source-of-funds documentation (purchase records, salary, sale documents).
- They approve the withdrawal.
This works but adds 24-48h to your off-ramp.
What the wallet does about it
The wallet's Off-Ramp section shows per-CEX:
- Whether they integrate IVMS 101 (most large EU CEXes do; most US ones don't yet)
- Threshold above which they require source-of-funds documentation
- Average withdrawal hold time
You pick the CEX that fits your needs.
The "above €1000" cliff
If you're regularly transferring €1000+ from your wallet to a CEX, expect:
- IVMS 101 ingestion from the CEX side (if supported)
- Detailed source-of-funds questions on the first few transactions to a new IBAN
- Faster processing once they have your established pattern
Below €1000, the friction is much lower. This is why splitting a €5000 off-ramp into 5x €1000 isn't a good idea — looks like structuring (specifically illegal under most AML laws). Don't do it. The wallet's UI explicitly refuses to suggest splits that look structured.
Next: KYC at crypto banks — what they ask and why.