Products
Pay
Passkey wallets for every identity: send USDC and EURC between handles, signed on the device.
Preview Every OpenPulse identity can hold wallets: passkey-signed smart accounts on Base, each with a normal address. Money is USDC and EURC. Payments are signed on the person’s device, network fees are sponsored, and a payment counts once it is on chain. OpenPulse resolves handles, quotes and records; it never holds a key.
In the browser#
import { createPay } from '@openpulse/sdk/pay'const pay = createPay({ api: '/api/pay', passkey: { url, key } })await pay.createWallet() // one passkey promptawait pay.send({ to: '@bob', amount: '12.50', currency: 'EUR', review })const { phrase } = await pay.setupRecovery() // show once; never storedFrom a session#
Servers and agents send through the session. A payment needs the person’s step-up assertion (su1.…) and an idempotency key; the result also wakes the session’s agent with payment.completed or payment.failed.
await pulse.pay.send({ amount: '1.000000', currency: 'USD', to: '@bob', idempotencyKey: 'order-8812', stepUp, // from the OpenPulse-hosted step-up page})Where it leaves our edge#
Payments settle on the Base blockchain, which is outside our edge by design.