Skip to main content
sendSponsoredTransaction is the primary function for EVM gas sponsorship. It signs an intent for a batch of calls, relays it to Dynamic’s sponsorship backend, and resolves once the relay reports the transaction has been included on-chain. The user pays no gas.
EVM Gas Sponsorship is an enterprise-only feature and works with V3 MPC embedded wallets only. See the Overview for setup.

Usage

Parameters

sendSponsoredTransaction accepts one of two shapes: a set of unsigned calls to sign and send, or a signedTransaction you already produced with signSponsoredTransaction.

Signing and sending calls

Each entry in calls is a SponsoredTransactionCall:

Sending a pre-signed transaction

Both shapes take an optional final client argument — only needed if your app runs multiple Dynamic clients.

Returns

Promise<{ transactionHash: Hex }> — the on-chain transaction hash, once the relay reports the transaction has been included. Under the hood the function relays the intent, then polls for up to 60 seconds (see waitForSponsoredTransaction).

How it works

When you call sendSponsoredTransaction, the SDK:
  1. Builds an EIP-712 intent describing the batch of calls and a deadline
  2. Signs the intent with the user’s embedded wallet (and, if delegation is needed, an EIP-7702 authorization for the wallet’s EOA)
  3. Relays the signed intent to Dynamic’s sponsorship backend
  4. Polls the relayer until the request reaches a terminal state, then returns the on-chain transaction hash
EIP-7702 delegation is what lets a relayer submit a batch of calls on the user’s behalf. The user’s EOA is delegated, once, to a Dynamic-operated relayer contract.

Examples

Batch calls (multiple actions, atomically)

A single call can carry multiple entries — they execute together, all-or-nothing. This sends two USDC transfers to two addresses in one sponsored transaction:

Reusing an authorization

Pass a pre-signed authorization (from sign7702Authorization) to attach an explicit EIP-7702 authorization to the transaction instead of letting the SDK sign one automatically:

Errors

If sponsorship can’t go through, sendSponsoredTransaction throws a SponsorTransactionError. There is no silent fallback — if it throws, the transaction did not happen.
A SponsorTransactionError is thrown when the sponsorship API rejects the request, the relay reports a terminal failure status, the request times out after 60 seconds, or the wallet doesn’t support sponsored transactions. See Error handling for the full list.
Last modified on July 23, 2026