Documentation

WidgetPay APIContractsPlayground

Product

cherum.ioOpen appDashboard

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.

CherumFanOutRouter — address on each network
NetworkChain IDAddressSource
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.

CherumReceiver — address on each network
NetworkChain IDAddressSource
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.

CherumRouter — address on each network
NetworkChain IDAddressSource
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.

CherumDisperse — address on each network
NetworkChain IDAddressSource
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.

CherumDepositFactory — address on each network
NetworkChain IDAddressSource
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.

CherumDepositForwarder — address on each network
NetworkChain IDAddressSource
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.

CherumClaim — address on each network
NetworkChain IDAddressSource
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).

Safe 2-of-3 — address on each network
NetworkChain IDAddressSource
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.

  • open and openFor on the settler revert with ExecutionDisabled — 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.
CherumOriginSettler — address on each network
NetworkChain IDAddressSource
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
Replaced contracts, still on chain
ContractNetworkAddressSource
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
V1 (2026-05-05) — on chain, source never published
ContractNetworkAddressOn 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