Skip to main content
Transaction operations require an active wallet session. sendTransaction and callContract are alternate input forms for the same prepare, fee, execute, and status lifecycle.

Send a native transfer

Pass an exported network, a recipient, and a raw base-unit value:
parseUnits returns an integer string. Use the transferred token’s decimals when converting user-facing values. It rounds excess fractional precision to the nearest base unit by default; pass { roundingMode: 'reject' } when the input must match that precision exactly.

Use encoded calldata

Use the same method when your app already has encoded calldata. Set value to the native-token amount sent with the call:

Call a contract by method

Use callContract when you have a method signature and typed argument values instead of encoded calldata:
callContract accepts the same execution mode, fee selector, wait setting, and polling options as sendTransaction.

Understand the lifecycle

Both methods perform one lifecycle:
1

Prepare

The SDK resolves the transaction input for the selected network and obtains the execution quote.
2

Resolve fees

Sponsored transactions continue without app fee selection. When payment is required, the SDK passes quoted options to selectFeeOption.
3

Execute

The SDK submits the prepared wallet transaction and returns its txnId.
4

Wait for status

By default, the method polls until status resolves or polling times out. An onchain txnHash appears when available.
Leave mode undefined to use the SDK’s default execution behavior. Set 'native' or 'relayer' only when your application explicitly controls that choice.

Select a fee

Testnet transactions are sponsored and skip fee selection. For a non-sponsored mainnet transaction, use the built-in selector to choose the first quoted token whose raw available balance covers the fee:
If you omit selectFeeOption, the SDK uses the first option returned by OMS without checking whether the wallet can afford it. For custom selection, return an option’s selection. This example prefers a quoted USDC fee and returns undefined when none is available:
Each option contains feeOption, selection, and optional balance and available-amount fields. The callback can return synchronously or as a promise.

Read the result

Both transaction methods return: waitForStatus defaults to true. A timed-out status resolution does not remove txnId; check that ID before retrying the write.

Control status waiting

Return after submission without waiting:
Check the latest status later:
Override polling only when the default wait behavior does not fit your UI:
Message and typed-data signatures do not submit transactions. Use sign and verify for those operations.