BuckspaySigner value that drops into the same
createBuckspayClient call and the same prepare -> sign -> send pipeline.
How it works
A signer factory is a function that returns aBuckspaySigner object. The object implements two
methods the engine calls internally:
getPublicKey()- resolves the Stellar account address backing this signer.signAuthEntry(payload)- signs a Soroban authorization entry for the current payment.
sign() (the second phase of prepare -> sign -> send). All user
interaction - wallet pop-ups, WebAuthn prompts, OAuth redirects, OTP verification - happens inside
this one call. The rest of the pipeline is silent.
Some signers also expose an optional authenticate?() step for social and email flows, which
runs the identity-resolution phase before the payment itself.
Choosing a signer
| Signer | Package | Best for |
|---|---|---|
| Wallets Kit | @buckspay/signers/wallets-kit | Users with Freighter, xBull, or LOBSTR |
| Passkey | @buckspay/signers/passkey | Passwordless new-user flows (browser) |
| Social login | @buckspay/signers/social | Sign in with Google/Apple/Discord via web3auth |
| Email OTP | @buckspay/signers/email | Email-code verification without a wallet |
| Native passkey | @buckspay/react-native | iOS and Android (secure enclave) |
Wallets Kit
Browser injected wallets - Freighter, xBull, LOBSTR.
Passkey
WebAuthn / secp256r1 on a smart contract account.
Social login
Google, Apple, Discord via web3auth - secrets stay server-side.
Email OTP
One-time code over email - no wallet, no seed phrase.
Native passkey
iOS/Android secure enclave via
@buckspay/react-native.Prepare -> Sign -> Send
The shared flow every signer feeds into.

