Skip to content
UseQR

QR code type

Ethereum QR codes — the EIP-681 URI explained

An Ethereum QR code stores an EIP-681 URI with the recipient address and optionally a chain id and value in wei. Simple address-only codes work everywhere; the richer forms — token transfers and contract calls — are supported inconsistently, so test with the wallets your audience actually uses.

The payload

Simple transfer:

ethereum:0x1234...abcd@1?value=1e18

ERC-20 token transfer:

ethereum:0xTokenContract@1/transfer?address=0xRecipient&uint256=1e6
Part Meaning
@1 Chain id — 1 is mainnet, 137 Polygon, 42161 Arbitrum, 8453 Base
value Amount in wei; 1e18 is 1 ETH
/transfer Contract function to call
uint256 Token amount in the token's smallest unit

Wei, and the scientific notation that saves you

Values are in wei — 10^18 wei to the ether. Writing value=1 sends one wei, effectively nothing. EIP-681 permits scientific notation, so 1e18 is one ether and 2.5e17 is 0.25 ether. Use it; a literal 19-digit integer is both error-prone and adds modules.

The chain id is not optional in practice

Omit @1 and a multi-chain wallet has to guess. Sending mainnet USDC to an address on the wrong network is a common and usually unrecoverable mistake. Always include the chain id, and print the network name in text next to the code.

Support is genuinely uneven

  • Address-only (ethereum:0x…): universal.
  • With value: widely supported.
  • ERC-20 /transfer: MetaMask and several others honour it; many wallets ignore the function and open a plain send screen.
  • Arbitrary contract calls: rarely supported from a scanned QR code, and rightly treated with suspicion.

If your audience uses a specific wallet, test on it before printing. Otherwise stick to the address-only form and let the payer choose asset and amount.

Safety

Same rules as Bitcoin, plus one: a QR code that triggers a contract call is a real attack surface. Approving an unlimited token allowance takes one confirmation and drains a wallet later. Never scan a contract-call QR code from an untrusted source, and never ask your customers to.

FAQ

What units is the value in?

Wei. There are 10^18 wei in one ether, so one ether is value=1e18. EIP-681 allows scientific notation, which is far safer than typing nineteen digits.

Do I need to include the chain id?

Yes, in practice. Without it a multi-chain wallet has to guess the network, and sending on the wrong chain is usually unrecoverable. Print the network name in text as well.

Do ERC-20 token transfer QR codes work?

Inconsistently. MetaMask and some others honour the /transfer form; many wallets ignore it and open a plain send screen. Test with the wallets your audience uses.

Are contract-call QR codes safe to scan?

Treat them as dangerous from any untrusted source. A single confirmation can grant an unlimited token allowance that is drained later.

Try it — free, no signup