Skip to main content
Strategy deposits, withdrawals, and swaps return one or more transaction legs in bytecode[] (or transactionData[] for swaps). These legs are a single logical operation — not independent transactions you can pick and choose.
Do not send each item in bytecode[] as a separate wallet transaction.Partial execution can move funds into Pods escrow while the action stays PENDING indefinitely (until SLA refund or support). This is especially common on cross-chain flows (e.g. Ondo Stocks) where the origin chain bundle may include approve + bridge legs.Execute every leg that shares the same chainId in one atomic transaction.

Atomic execution

Filter legs by chainId (or chainIdIn on strategy responses), then batch them: All legs in the batch succeed or all revert — no half-executed funding.
Cross-chain strategy flows may require signatures on more than one chain (e.g. fund on Base, sell on BSC). Each chain’s legs are still one atomic bundle per chain — never split legs within the same chainId.

Choosing output

Bytecode endpoints accept output to match your signing infrastructure:

output=bytecode (default)

Use when the signer is an EOA or you control a contract that batches calls.
Recommended path for EOAs: EIP-7702 batch deposit.

output=userOperation

Use when the wallet param is a smart account and you submit via EntryPoint / bundler.
output=userOperation targets an already-deployed smart account at wallet. If the account is not on-chain yet, building the userOp fails with Could not create a new SmartAccount without an owner. Provision the account first — see Smart Account Deposit or your AA provider’s deploy flow.
Pods does not auto-provision a smart account for a plain EOA address. Use output=bytecode and batch with EIP-7702, or create the smart account explicitly before requesting userOperation.

output=fireblocks

Use with Fireblocks custody. Requires accountId (vault account ID) and a smart wallet previously provisioned via POST /fireblocks-smart-account.
See Fireblocks Integration.

Decision tree

After execution

  1. Save the id from the bytecode response for tracking.
  2. Poll GET /actions/{id}, WebSocket /updates, or customer webhooks for ACTION_UPDATE.
  3. For async strategies (Ondo request-lend / request-withdraw), also poll position or GET /strategies/:id/status?wallet= until pending arrays clear.

Common mistakes

Next steps

EIP-7702 Example

Atomic EOA batching with viem

Smart Account Deposit

ERC-4337 flow with output=userOperation

Fireblocks

Custody integration with output=fireblocks

Ondo Global Markets

Cross-chain stocks — high-risk partial-execution flow