> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chipipay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gasless Wallets

> Give your users a Starknet wallet they sign with Touch ID / Face ID / Windows Hello. They never type a password, never see a seed phrase, and never pay gas.

A Chipi Gasless Wallet is a real Starknet account your user fully controls. Your app calls one method to create it; the user signs with biometrics; Chipi's paymaster pays the gas. You don't custody anything.

## What you actually build

* **A "Sign up with Touch ID" button.** The user taps once, you get back a wallet address tied to their device's passkey.
* **A "Send" button that just works.** No gas modal. No funding step. No PIN prompt.
* **A recoverable account.** If the user loses their phone, they get back in — either from a second device they registered or from a recovery contact you set up at onboarding.

## What you do NOT build

* A custody system. The user's signing key lives in their device's secure enclave; you can't move it, sign for it, or recover it without them.
* A gas station. Chipi's paymaster spends from your service balance; users never see gas at all.
* A seed-phrase backup flow. The user authenticates with biometrics every time — there's no phrase to copy down.

## Pick your starting point

> **[Node.js / TypeScript](/services/gasless/node)**
>
> `@chipi-stack/backend` — the headline path. Server creates the wallet, browser passkey signs every transfer.

> **[Python](/services/gasless/python)**
>
> `chipi-stack` on PyPI — same flow from a Python backend.

> **[React + passkey](/sdk/passkeys/quickstart)**
>
> Browser side. Register the passkey, sign the transaction. End-to-end example.

> **[Add session keys](/services/gasless/sessions)**
>
> Skip the biometric prompt for routine actions. The user signs once; subsequent transfers run automatically until the session expires.

## After onboarding

| Need | Page |
| - | - |
| Read balances | [balance](/services/gasless/balance) |
| List or query transactions | [transactions](/services/gasless/transactions) |
| Help a user who lost access | [recover access](/services/gasless/recovery) |
| Add a second device or co-signer | [add a second device](/services/gasless/threshold) |
| Upgrade existing wallets to add recovery | [upgrade existing wallets](/services/gasless/migration) |
| Handle errors gracefully | [errors](/services/gasless/errors) |

## A note on PINs

The SDK accepts a PIN as the wallet's encryption key. **Don't lead with that flow** — a user-typed PIN is short, low-entropy, and trivially compromised by shoulder-surfing or phishing. The recommended default is the platform passkey (Touch ID / Face ID / Windows Hello / Android biometrics), where the signing key stays inside the device and never derives from anything the user types.

PIN is supported as a fallback for users on devices that don't support WebAuthn, and as a recovery surface if the passkey ever fails. Both flows are documented in [recover access](/services/gasless/recovery).

## Operating from the dashboard

> **[Open the Gasless service](https://dashboard.chipipay.com)**
>
> Dashboard → Services → Gasless Wallets

Once you've completed the 5 onboarding milestones (API keys → auth → first wallet → first transfer → webhook), the dashboard surfaces recent wallets, recent activity, and the upgrade-existing-wallets affordance.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.