Limits

Which tokens

The portal holds one token: DAI on Ethereum.

You can deposit DAI, USDC or USDT, including for the deposit that claims your tag. USDC and USDT are swapped to DAI on the way in.

You cannot deposit any other token.

Deposits come from Ethereum only. A token on any other chain cannot reach a deposit address.

How much you can move

Every deposit, every payment and every withdrawal must stay below $2,500. The cap is on each transaction, not on your balance: you can hold more than that, and move it in separate transactions. Only deposits warn you first — zk.money stops a deposit that is over the cap before you send it, while a payment or a withdrawal over the cap fails when you make it.

Deposits also share one limit of $50,000 per day, across all users. Every deposit draws from the same bucket, and it fills again as time passes: there is no daily reset, and no share reserved for you. If a deposit is larger than the space left, zk.money does not check before it tries and the Ethereum transaction fails. Your funds stay at the deposit address and are not lost. Try again later, or send them back to an Ethereum address you control from your activity list.

The caps exist for two reasons. They hold down the loss in the failure described on Trust model. They are also a launch safeguard, while the system is new.

What it costs

The tag. Claiming a tag costs $4.90, and an additional $0.10 goes to a fee-paying contract. The total of $5 comes out of your first deposit. You can waive the $4.90 tag fee in the sign-up flow if you're eligible; see Get started. If your tag claim fee is waived, you'll pay $0.60 in fees in your first deposit.

Deposits. A deposit costs $0.35. Of that, $0.25 goes to the relayers who move your deposit into zk.money, to subsidize their Ethereum gas, and $0.10 tops up the fee-paying contract.

Withdrawals. A withdrawal costs $0.20 — $0.10 for the Ethereum transaction that releases your funds on the portal side, and $0.10 to top up the fee-paying contract.

The swap. If you deposit USDC or USDT, the deposit contract swaps it to DAI through Curve. You pay the price of that swap. The swap sets no price floor. You take the market price at that moment, whatever it is. A deposit of 100 USDC does not necessarily become 100 DAI.

Network fees inside zk.money. No network fees are paid in zk.money today. You get 100 free transactions per day. A payment, a withdrawal, a payment link and a cancel each use one transaction.

Sponsorship is not guaranteed. It stops while the fee-paying contract is empty, and while the Aztec Network's fee is higher than that contract will pay. You cannot pay a network fee out of your balance instead, so your transactions wait until sponsorship resumes.

Ethereum gas. You pay the gas on your own deposit transaction. You pay gas again only if you do a job yourself: "Sweep now" on a late deposit, the last transaction of a withdrawal that no relayer finalizes, or sending a failed deposit back to an address you control.

There is no charge beyond the amounts above.

The free fee cover is subject to change in the future. There is no date for when it ends.

Address screening

Ethereum addresses are screened against a sanctions policy using Predicate. The check runs offchain.

The wallet you deposit from and the address you withdraw to are both screened.

The check runs as you type an address, and again when you confirm, before anything is spent. A blocked address stops you there.

  • A blocked deposit wallet reads: "This wallet can't be used to deposit. Connect a different one."
  • A blocked withdrawal address reads: "This address can't receive withdrawals."
  • If the service does not answer, the wallet says it could not verify the address and offers Retry. It does not let you continue.

The relayer applies the same policy when it finishes a withdrawal on Ethereum. A blocked address means the relayer does not act.

The contract holds no list of addresses. The screening is a policy applied by the zk.money frontend and the relayer.

Changing the limits

The caps cannot be raised without a new portal contract. They are fixed in the portal contract when it is deployed, and nothing can change them afterwards.

A new limit therefore needs a new portal contract, and it needs you to choose to move your funds to it. The caps are expected to grow as the system spreads across more operators. There is no set date for when the caps will be changed.