Skip to main content
Sending a transaction is a three-step flow: prepareTransaction fetches a quote, signTransaction signs it, submitTransaction sends it to the orchestrator. Splitting the steps lets you show the user a quote before they approve, fetch on a backend and sign on a mobile frontend, or pick a non-default route.

Send a single-chain transaction

Pass a chain and a list of calls. The example below transfers USDC on Base Sepolia:

Send a cross-chain transaction

Swap chain for sourceChains + targetChain. The SDK handles bridging and routing with no separate bridge interaction required:
To deploy the account on a specific chain before transacting, call await rhinestoneAccount.deploy(chain) first. Otherwise, any transaction triggers deployment as part of the intent — token transfers, contract calls, approvals, anything.

Custom fill deadline

A transaction’s on-chain fill deadline defaults to 2 minutes. For a same-chain transaction that settles without bridging, extend it with customDeadline — an absolute unix timestamp in seconds. Useful when a user needs longer to approve, or you prepare a quote now and submit it later.
The value must be between now + 120s and now + 86400s (24 hours); outside that range the request is rejected.
customDeadline is honored only on same-chain transactions that settle without bridging. On cross-chain transactions it is ignored and the default 2-minute deadline applies.

Next steps

Crosschain

Send funds across chains with a single signature. No bridging required.

Unified balance

Aggregate user balances across chains to fund any intent.

Sponsor fees

Cover gas, bridging, and swap fees for your users.