Define the calls
This example transfers 0.1 USDC from the account on Base Sepolia. Both wallet types use the same calldata. Calls run in order and revert together if one fails.Send the transaction
- Embedded wallet
- Custom signer
Use
oneAuth and the authenticated accountAddress from Accounts. These options are available in @rhinestone/1auth 0.10.1.sendIntent() prepares the route, requests passkey approval, and submits the transaction. Set sourceChainId and targetChain to the same chain to keep funding and execution on Base Sepolia:experimental_clear_signing: true shows Rhinestone’s prepared-action review before passkey approval. By default, your application owns the review UI. See Clear signing for the experimental review contract.closeOn: "completed" waits for completion rather than an earlier execution milestone. waitForHash: true also requests the onchain transaction hash. If a request times out, keep any returned intentId and check it with oneAuth.getIntentStatus(intentId) before sending again. Inspect status: a pending status is not a failed transaction, even when that status response has success: false.Choose who pays
This example usessponsorshipMode: "required": sponsorship must succeed or the request fails. Set it to "disabled" for a user-paid quote, with enough USDC on Base Sepolia to cover fees as well as the transfer.Embedded wallets do not expose ranked quotes or per-category sponsorship controls through sendIntent(). See Sponsor fees for funding modes and fallback behavior.Try atomic calls
This sponsored testnet demo uses the embedded wallet provider’swallet_sendCalls to relay two 0.1 mUSD transfers on Base Sepolia. Sign in, mint mock tokens if needed, then approve both calls together. Unlike a queue of intents, these calls execute in one transaction and revert together.A calls ID identifies the submission, not its outcome. Use Check status to inspect the receipts: 0x1 means success and 0x0 means failure, even when the overall status is CONFIRMED.