Contracts
Contract addresses
Every Cherum contract that is live on chain, grouped by the product it belongs to — 61 deployments across 7 networks: 54 the product uses every day, including the 2-of-3 Safe that owns them, and 7 that are deployed but not wired into anything.
Checked 16 September 2026 against the Etherscan v2 API, all seven networks including HyperEVM 999: every address below returns verified source, and the contract name on chain matches the name in the table.
Sourcify keeps the source files themselves rather than a link to them, which makes it a second, independent place to read the same code. It holds 58 of these 61: all 54 contracts we deployed, and the Safe on 4 of its 7 networks. The Safe is Gnosis’s contract, not ours — on Arbitrum One, BNB Chain and HyperEVM nobody has submitted it there. Look an address up on Sourcify
You never need to send funds to a contract by hand. The address you pay is the one the service hands back to you — in the widget, in the API response, on the invoice. We will never ask you to move money to an address that arrived in a message, an email or a chat.
This page is here so you can check an address you were already given, not so you can pick one out of a list.
Read the chain id, not just the address. These were deployed with plain CREATE, so the same address can be a different contract on a different network — same deployer, same nonce, different chain. Match on the pair, never on the address alone.
Exchange#
Cross-chain and same-chain swaps.
CherumFanOutRouter7 networks
Starts a cross-chain send. One signature is split into legs across bridges and destination chains.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0x7ba303dc…3935b9d7 | Code for CherumFanOutRouter on Ethereum, opens Etherscan |
| Base | 8453 | 0x652F64bd…f1F65e45 | Code for CherumFanOutRouter on Base, opens Basescan |
| Arbitrum One | 42161 | 0x0902e981…6cab3145 | Code for CherumFanOutRouter on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0xb0284630…fbe55560 | Code for CherumFanOutRouter on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x925a2eda…6631d391 | Code for CherumFanOutRouter on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x7d38a643…5bb97b7c | Code for CherumFanOutRouter on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x0b331496…e050d839 | Code for CherumFanOutRouter on HyperEVM, opens HyperEVMScan |
CherumReceiver7 networks
Takes delivery on the destination chain: catches the bridge callback, swaps into the token that was asked for, forwards it to the final recipient.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0x9852ef70…3c03ff53 | Code for CherumReceiver on Ethereum, opens Etherscan |
| Base | 8453 | 0x925A2EdA…6631d391 | Code for CherumReceiver on Base, opens Basescan |
| Arbitrum One | 42161 | 0x37e98e1d…ff4e40b3 | Code for CherumReceiver on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x652f64bd…f1f65e45 | Code for CherumReceiver on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x97922a74…d9142ff6 | Code for CherumReceiver on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x6cf547e3…ee5d8da8 | Code for CherumReceiver on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x75121636…2e84d4a3 | Code for CherumReceiver on HyperEVM, opens HyperEVMScan |
CherumRouter7 networks
Swap and fan-out inside one chain: one signature, many recipients, no bridge involved.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0xc8e81fa8…a80fc5ca | Code for CherumRouter on Ethereum, opens Etherscan |
| Base | 8453 | 0xe7BE2634…9A13Ca60 | Code for CherumRouter on Base, opens Basescan |
| Arbitrum One | 42161 | 0x833aaffb…6db1b5e1 | Code for CherumRouter on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0xe7be2634…9a13ca60 | Code for CherumRouter on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0xa0eca6a1…c1ee12fa | Code for CherumRouter on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x2b342878…cfff4c6c | Code for CherumRouter on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x6a10e5bf…5bf2f080 | Code for CherumRouter on HyperEVM, opens HyperEVMScan |
Payouts#
Pay many recipients at once.
CherumDisperse7 networks
Pays many recipients one token in a single transaction.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0x059645c6…1A1a9Ec7 | Code for CherumDisperse on Ethereum, opens Etherscan |
| Base | 8453 | 0x94095aEe…dB2EF135 | Code for CherumDisperse on Base, opens Basescan |
| Arbitrum One | 42161 | 0x23619816…6D568E46 | Code for CherumDisperse on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x38c855Ac…09781c6e | Code for CherumDisperse on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x833aaffB…6DB1B5E1 | Code for CherumDisperse on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x2A8aA031…7E2D1A6d | Code for CherumDisperse on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x98015375…971A0B6C | Code for CherumDisperse on HyperEVM, opens HyperEVMScan |
Payments#
Accept crypto against an invoice.
CherumDepositFactory6 networks
Mints the deposit address of an invoice and sweeps what lands on it into the treasury — deploy and flush in one transaction.
Deployed from nonce 0 on every chain, so the address is the same on all six — and so is the deposit address of any given invoice.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0x17FEa05a…cA551B27 | Code for CherumDepositFactory on Ethereum, opens Etherscan |
| Base | 8453 | 0x17FEa05a…cA551B27 | Code for CherumDepositFactory on Base, opens Basescan |
| Arbitrum One | 42161 | 0x17FEa05a…cA551B27 | Code for CherumDepositFactory on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x17FEa05a…cA551B27 | Code for CherumDepositFactory on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x17FEa05a…cA551B27 | Code for CherumDepositFactory on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x17FEa05a…cA551B27 | Code for CherumDepositFactory on BNB Chain, opens BscScan |
CherumDepositForwarder6 networks
The template every deposit address is cloned from. It is a blueprint: nothing is ever paid to this address itself.
It has no owner: the treasury it flushes into is baked into the bytecode as an immutable, and reads back as the Safe below.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0x67d124b0…1Ff3E920 | Code for CherumDepositForwarder on Ethereum, opens Etherscan |
| Base | 8453 | 0x67d124b0…1Ff3E920 | Code for CherumDepositForwarder on Base, opens Basescan |
| Arbitrum One | 42161 | 0x67d124b0…1Ff3E920 | Code for CherumDepositForwarder on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x67d124b0…1Ff3E920 | Code for CherumDepositForwarder on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x67d124b0…1Ff3E920 | Code for CherumDepositForwarder on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x67d124b0…1Ff3E920 | Code for CherumDepositForwarder on BNB Chain, opens BscScan |
Claims#
The recipient withdraws for themselves.
CherumClaim7 networks
Escrow the recipient withdraws from: a campaign is funded once, each recipient claims their own share against a stored proof.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0xc9B3d35d…8e899FDD | Code for CherumClaim on Ethereum, opens Etherscan |
| Base | 8453 | 0x978106be…41c75a4e | Code for CherumClaim on Base, opens Basescan |
| Arbitrum One | 42161 | 0x35A20694…c18C9d82 | Code for CherumClaim on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x833aaffB…6DB1B5E1 | Code for CherumClaim on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0xFdB201f9…0692A560 | Code for CherumClaim on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0xEDc66D96…39eF10A0 | Code for CherumClaim on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x389ED74b…FCa1cF27 | Code for CherumClaim on HyperEVM, opens HyperEVMScan |
Ownership#
Who owns the contracts and holds the funds.
Safe 2-of-37 networks
Owner of every contract above and the treasury every payment settles into. Two of three signatures move anything.
Safe v1.4.1, the same address on all seven chains (CREATE2, saltNonce 20260426; replayed on HyperEVM with saltNonce 2026).
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on Ethereum, opens Etherscan |
| Base | 8453 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on Base, opens Basescan |
| Arbitrum One | 42161 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x3271Bd56…a81543B0 | Code for Safe 2-of-3 on HyperEVM, opens HyperEVMScan |
Deployed, not wired#
One contract on this list is on chain and verified but takes no part in anything you can do today. It is listed anyway: an address you can find on a block explorer under our deployer should be explained here, not left for you to guess at.
Show the 7 addresses
CherumOriginSettlernot in use
ERC-7683 origin settler — the standard intent entry point. Deployed and verified, but not part of any live route.
openandopenForon the settler revert withExecutionDisabled— the contract is a read surface, it never takes custody.- The settler entry on the fan-out router is flag-gated, and
settlerExecutionEnabled()reads false on all seven chains (read 2026-09-16 over public RPC). - No route in the backend or the frontend references it, and no vault variable points at it.
| Network | Chain ID | Address | Source |
|---|---|---|---|
| Ethereum | 1 | 0xb6401c71…4d97b96c | Code for CherumOriginSettler on Ethereum, opens Etherscan |
| Base | 8453 | 0x97922a74…d9142ff6 | Code for CherumOriginSettler on Base, opens Basescan |
| Arbitrum One | 42161 | 0x64a85189…72998192 | Code for CherumOriginSettler on Arbitrum One, opens Arbiscan |
| Optimism | 10 | 0x925a2eda…6631d391 | Code for CherumOriginSettler on Optimism, opens Optimistic Etherscan |
| Polygon | 137 | 0x3b42b9ad…d43fedb1 | Code for CherumOriginSettler on Polygon, opens Polygonscan |
| BNB Chain | 56 | 0xfd08f39d…59c1036e | Code for CherumOriginSettler on BNB Chain, opens BscScan |
| HyperEVM | 999 | 0x60a68537…9202314a | Code for CherumOriginSettler on HyperEVM, opens HyperEVMScan |
What the owner can and cannot do#
The five contracts that hold or move money — fan-out router, receiver, router, disperse and claim — are owned by the 2 of 3 Safe above. The deposit factory and forwarder have no owner at all: the treasury they sweep into is an immutable in their bytecode, and it reads back as that same Safe.
Fee ceilings live in the bytecode, not in a config file: a total fee can never exceed 10% and an integrator’s share can never exceed 5%. Raising either one means deploying a new contract at a new address — which is the point. A ceiling that can be lifted quietly is not a ceiling.
There is no timelock, and that is deliberate. Configuration changes apply the moment two of three signers agree; so does pausing, and so does removing an aggregator from the allowlist. Taking a permission away should never have to wait out a delay. What one change is able to do is bounded at the execution layer instead — an allowlist of target and selector, exact approvals that are reset after the call, and a balance invariant checked per leg.
renounceOwnership is permanently disabled. A contract with no owner cannot be paused and cannot release funds at rest, so the call reverts; ownership can still be transferred, in two steps.
Superseded — do not use#
A contract cannot be deleted from a chain, so the versions we have replaced are still sitting there. These 31 — 19 replaced by a later deploy and 12 from the very first release — are out of every config and out of every route; nothing we run will ever hand you one of them. They are here so that an address you find in an old transaction has an answer.
Replaced by a later deploy19 addresses
Verified on their network’s explorer, same as everything above — the source is there to read.
Show 19 replaced addresses
| Contract | Network | Address | Source |
|---|---|---|---|
| V2 (2026-05-22) · replaced 2026-06-26 · Replaced by the 2026-06-26 redeploy. Left on chain, out of every config. | |||
| CherumFanOutRouter | Ethereum 1 | 0xA2390421…e78B018D | Code for the replaced CherumFanOutRouter on Ethereum |
| CherumFanOutRouter | Arbitrum One 42161 | 0x2b342878…cFFF4c6c | Code for the replaced CherumFanOutRouter on Arbitrum One |
| CherumFanOutRouter | Optimism 10 | 0xF503bb66…5373A2D1 | Code for the replaced CherumFanOutRouter on Optimism |
| CherumFanOutRouter | Base 8453 | 0xAf8A5c8f…6a157dbe | Code for the replaced CherumFanOutRouter on Base |
| CherumFanOutRouter | Polygon 137 | 0x3844A5ea…95AA1477 | Code for the replaced CherumFanOutRouter on Polygon |
| CherumFanOutRouter | BNB Chain 56 | 0x6a10E5BF…5bF2F080 | Code for the replaced CherumFanOutRouter on BNB Chain |
| CherumReceiver | Ethereum 1 | 0xBD710daB…C1aEe989 | Code for the replaced CherumReceiver on Ethereum |
| CherumReceiver | Arbitrum One 42161 | 0xfD08F39d…59c1036E | Code for the replaced CherumReceiver on Arbitrum One |
| CherumReceiver | Optimism 10 | 0xAf8A5c8f…6a157dbe | Code for the replaced CherumReceiver on Optimism |
| CherumReceiver | Base 8453 | 0x3844A5ea…95AA1477 | Code for the replaced CherumReceiver on Base |
| CherumReceiver | Polygon 137 | 0x8D4D8D82…c6D5C1F1 | Code for the replaced CherumReceiver on Polygon |
| CherumReceiver | BNB Chain 56 | 0x60a68537…9202314A | Code for the replaced CherumReceiver on BNB Chain |
| CherumRouter, first cut (2026-06-01) · replaced 2026-06-26 · The first same-chain router. Replaced by the 2026-06-26 redeploy. | |||
| CherumRouter | Arbitrum One 42161 | 0xEDc66D96…39eF10A0 | Code for the replaced CherumRouter on Arbitrum One |
| CherumRouter | Ethereum 1 | 0x5ee2D0bf…Ef3fC357 | Code for the replaced CherumRouter on Ethereum |
| CherumRouter | Optimism 10 | 0xD231eAcA…f953eec3 | Code for the replaced CherumRouter on Optimism |
| CherumRouter | Base 8453 | 0xDf1690A8…94295EdE | Code for the replaced CherumRouter on Base |
| CherumRouter | Polygon 137 | 0xcAc5927e…0D5BBBBb | Code for the replaced CherumRouter on Polygon |
| CherumRouter | BNB Chain 56 | 0x1de2259A…c2A44881 | Code for the replaced CherumRouter on BNB Chain |
| First HyperEVM receiver (2026-06-03) · replaced 2026-07-05 · The destination-only receiver HyperEVM opened with, before the full set was deployed there on 2026-07-05. | |||
| CherumReceiver | HyperEVM 999 | 0x1FC3bC09…3D498BC4 | Code for the replaced CherumReceiver on HyperEVM |
V1 (2026-05-05) — not verifieddo not use
The first release. Superseded by V2 at the cutover on 22 May 2026, out of every config since. Unlike everything else on this page these were never verified with an explorer, so there is no source to open — the only thing an explorer will show you is bytecode.
All twelve still have code at their address, read with eth_getCode over public RPC on 16 September 2026. The six fan-out routers are byte-identical to each other (16 743 bytes); the six receivers are 12 518 bytes each but differ between chains, because the addresses they were built around are immutables in the bytecode.
Do not send anything to these. They are here only so that an address from an old transaction has an answer. And read every line below as a pair — network and address. The same string of characters on another network is a different contract, deployed by the same key at the same nonce:
0x64a85189…72998192— CherumFanOutRouter on Ethereum here; CherumOriginSettler on Arbitrum One today.0x75121636…2E84D4a3— CherumFanOutRouter on Base and Optimism here; CherumReceiver on HyperEVM today.0x6a10E5BF…5bF2F080— CherumReceiver on Base, Optimism and Polygon here; CherumRouter on HyperEVM today.0x60a68537…9202314A— CherumReceiver on Polygon here; CherumOriginSettler on HyperEVM today.
Show the 12 V1 addresses
| Contract | Network | Address | On chain |
|---|---|---|---|
| CherumFanOutRouter | Ethereum 1 | 0x64a85189…72998192 | 16 743 bytes, no source |
| CherumReceiver | Ethereum 1 | 0x1266b100…F7fF12A6 | 12 518 bytes, no source |
| CherumFanOutRouter | Base 8453 | 0x75121636…2E84D4a3 | 16 743 bytes, no source |
| CherumReceiver | Base 8453 | 0x6a10E5BF…5bF2F080 | 12 518 bytes, no source |
| CherumFanOutRouter | Arbitrum One 42161 | 0x06E30192…949187A8 | 16 743 bytes, no source |
| CherumReceiver | Arbitrum One 42161 | 0x1de2259A…c2A44881 | 12 518 bytes, no source |
| CherumFanOutRouter | Optimism 10 | 0x75121636…2E84D4a3 | 16 743 bytes, no source |
| CherumReceiver | Optimism 10 | 0x6a10E5BF…5bF2F080 | 12 518 bytes, no source |
| CherumFanOutRouter | Polygon 137 | 0x6a10E5BF…5bF2F080 | 16 743 bytes, no source |
| CherumReceiver | Polygon 137 | 0x60a68537…9202314A | 12 518 bytes, no source |
| CherumFanOutRouter | BNB Chain 56 | 0x1FC3bC09…3D498BC4 | 16 743 bytes, no source |
| CherumReceiver | BNB Chain 56 | 0xd2793A91…26dca92A | 12 518 bytes, no source |