Why a smart account
A user’s funds live in a ZeroDev Kernel v3.3 smart account (ERC-4337), not in the Web3Auth key’s own address. This gives Numpay:- Gas sponsorship. A paymaster pays for each operation, so users never hold ETH.
- Counterfactual deployment. The address exists before the contract does; it is deployed in the user’s first operation, also sponsored.
- A stable address across chains. The same key gives the same smart-account address on every EVM chain with the same Kernel deployment.
Key → account relationship
Deterministic address derivation
The smart-account address is computed with no network call:src/hooks/use-create-kernel.ts) and the backend (src/utils/kernelAddress.ts). The app registers this address with the backend, and the backend uses the same function to derive claimable-wallet addresses.
The app also self-checks at startup: it compares the address of the Kernel client it actually spends from with kernelAddressForEoa(eoa) and logs a loud error if they ever differ.
Building the client
Lifecycle of a sponsored payment
Gas sponsorship
On Base a sponsored transfer costs Numpay a fraction of a cent.

