Skip to content
UseQR
ESC

Jump to

↑↓MOVE↵OPEN50 places

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.

View as MarkdownPaste this page into any AI assistant. It is plain, portable Markdown.

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