Production apps should pair this with a passkey on the browser side. This
page uses a string
encryptKey for the smoke-test scenario, which is the
simplest possible flow. For shipping integrations, the encryptKey should
come from a platform passkey — see the passkey
quickstart for the browser flow. The server
pieces below are identical either way.CHIPI_PUBLIC_KEY, CHIPI_SECRET_KEY, CHIPI_BASE_URL, encrypted private keys) read from environment variables.
Install
Initialise the SDK
Create a wallet
createWallet provisions a fresh Starknet account, encrypts the private key with the encryptKey you provide, and returns the public key + encrypted private key. Chipi’s paymaster covers the deploy transaction.
Transfer USDC (gasless)
/configure/billing.
Putting it together
End-to-end, mirroring the smoke test:✅ Verified against the live API on 2026-05-11.
What’s next
Reading token balances, PIN/passkey rotation, and session keys are covered by their own smoke tests (staging-reads.test.ts, staging-update-encryption.test.ts, staging-sessions.test.ts) and will land in follow-up doc PRs.