project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Snap Pay

Your face is your wallet. Snap Pay: a ZK-based payment system that let you pay with just face + PIN.

Project Description

Snap Pay: Your Face is Your Wallet

Snap Pay is a secure, zero-knowledge-based payment system that lets users pay on-chain using just their face and a PIN—no phone, no wallet, no private keys required.


Why Payments Still Feel Broken

Whether you're using a credit card or a crypto wallet, you’re relying on a device—your phone, your card, or a clunky app. If you forget your wallet or your battery dies, you’re stuck.

We’ve accepted this fragility as normal, because we’ve also accepted the outdated assumptions behind it:

  • That we must carry our identity with us
  • That our identity should be stored inside a device
  • That access to money should depend on what’s in our pocket
  • That security means guarding secrets, not proving who we are

But with zero-knowledge proofs (ZK), that's no longer necessary. You can now prove you know something—without ever revealing or storing it. That unlocks a new paradigm: secure payments that don’t require trust in the device you’re using. And that’s the breakthrough Snap Pay is built on.


Why Snap Pay

Snap Pay isn't just a more secure wallet or a sleeker interface—it's a fundamental rethinking of how we prove who we are and access our money.

Instead of storing secrets, Snap Pay lets you prove your identity with a combination of face and PIN—secured by zero-knowledge proofs, and verified without exposing anything. There's no app to install, no device to trust, no keys to protect.

Your face becomes your identity. Your PIN becomes your proof.

Everything happens on any device, in any context—even one that isn't yours.

Snap Pay doesn't live inside your phone. It lives with you.


Start Using Snap Pay — Simple Enough for Ages 7 to 70

Snap Pay is designed to feel like it belongs in daily life.

The interface is intentionally simple: big buttons, large text, clean black-and-white UI—no clutter, no crypto jargon. It’s built for clarity, confidence, and accessibility—whether you’re 7 or 70.

You can try it now at snappay.ing.

Here’s how it works:

1. Onboarding

Getting started is fast and device-free.

  • Scan your face
  • Choose a username
  • Set a PIN

Behind the scenes, your face becomes a secure, non-reversible embedding. Your username is encrypted using your PIN, and a ZK-secured hash is written to the contract to create your account—without storing any sensitive data.


2. Receiving Payments

Once registered, you're ready to receive—instantly.

  • In person: A sender can walk up to your device (e.g., a merchant terminal), scan their own face, enter their own PIN, and send payment to you. Nothing from the sender is stored on your device—ZK makes the whole flow trustless and private.
  • Remotely: Others can send to your Snap Pay username from anywhere.

Snap Pay makes “getting paid” feel as simple as it should be.


3. Depositing Crypto

Already have crypto? You can fund your Snap Pay account directly:

  • Connect a wallet like MetaMask
  • Deposit test USDC into your Snap Pay balance
  • No further wallet connection needed—Snap Pay handles the rest

4. Sending Payments

To send funds, just follow three simple steps:

  1. Enter the amount
  2. Enter the recipient (Snap Pay username or Ethereum address)
  3. Scan your face and enter your PIN

A zero-knowledge proof is generated to confirm it’s really you, and the transaction is executed on-chain. Gas is sponsored and abstracted—so you never have to think about it.


A Future Without Wallets

Snap Pay isn’t just about making crypto easier. It’s about redefining what it means to access and use money in a digital world.

We’ve moved past needing physical cards, downloaded apps, and private key backups.

Now, you don’t need to carry anything at all—because you are the wallet.

Secure. Private. Frictionless.

From coffee shops to street markets, Snap Pay brings self-custody to the real world—finally making it usable, accessible, and invisible.

Try it for yourself at snappay.ing.

Because the next time you forget your wallet or your phone… you won’t need them.

How it's Made

Authenticating User with ZKP

Snap Pay uses zero-knowledge proofs (ZKPs) to authenticate users without exposing or storing sensitive credentials.

Purpose

ZKPs enable a user to prove they know their credentials (e.g., username + PIN) without revealing them. This ensures:

  • No private data is stored or transmitted
  • Authentication is secure, even on untrusted devices
  • Replay attacks are prevented using nonces

How It Works

  1. Credential Hashing:
    • The smart contract stores only:
      • usernameHash: a hash of the username
      • credentialHash: a hash of the username + PIN
  2. Off-Chain Proof Generation:
    • The user’s device generates a ZKP using their real credentials
    • This proof is created off-chain
  3. Submitting the Proof:
    • The user submits the ZKP (a, b, c) and public inputs to the contract
    • A fresh nonce is included to ensure the proof is used only once
  4. On-Chain Verification:
    • The contract uses an external verifier contract to validate the proof
    • If valid, the operation (e.g., register, send, withdraw) is authorized

Security Highlights

  • ZKPs ensure sensitive data never touches the blockchain
  • Nonces prevent replay attacks (usedNonces mapping)
  • All identity verification happens without exposing the actual username or PIN

This approach allows Snap Pay to offer secure, device-free authentication—making on-chain payments private, portable, and trustless.


Resolving User Account with Face Recognition

To understand how we resolve a user's account using Face Recognition, the process can be broken down into two key stages:

1. Registration (One-Time Setup)

This step is performed once per user during onboarding.

Step 1: Generate Face Embeddings

  • Face embeddings are generated locally on the user’s device using the Human.js library.
  • The result is a 1024-dimensional vector that uniquely represents the user’s facial features.

Step 2: Prepare User Metadata

  • The user’s username is encrypted using their personal PIN to protect their identity.

Step 3: Store in Vector Database

  • The encrypted metadata and the face embedding vector are stored securely in Pinecone, a vector database optimized for similarity search.

2. Resolving (Login or Payment Flow)

This step is performed during authentication events like login or when receiving payments.

Step 1: Generate Face Embeddings

  • Again, the user's face is processed on-device using Human.js to generate the current embedding vector.

Step 2: Face Similarity Search

  • A similarity search is performed in Pinecone using the input vector.
  • We retrieve matches with a cosine similarity greater than 0.7, ensuring reliable identification.

Step 3: Decrypt User Metadata

  • The user is prompted for their PIN.
  • Once provided, the associated encrypted metadata is decrypted to resolve the user’s account.

🔒 Security & Privacy Considerations

  • All face data is encrypted before being stored.
  • Face embeddings are generated entirely on-device — no facial images or raw data ever leave the device.
  • Only embeddings (not actual photos) are stored, and they cannot be reversed to reconstruct the original image.
  • The use of cosine similarity ensures efficient and accurate matching without compromising privacy.
background image mobile

Join the mailing list

Get the latest news and updates