When to deploy
Deploy once per vault you want to offer, per fee configuration. Deposits into a vault with no deployed wrapper fail withEARN_SETUP_REQUIRED (see Deposit into a vault). Pick vaults from the vault catalog; the catalog’s enabled flag tells you which vaults your organization has already enabled.
Choose your fee configuration
The deploy intent carries your fee:clientFeeBps: your fee on gross yield, in basis points ("2000"= 20%). It is capped at 4,000 bps; combined with Turnkey’s fee (10% of yield by default), the total cannot exceed 5,000 bps (50% of yield); deployments above the cap are rejected. See the fee model for current rates and caps.clientFeeWallet: the address that receives your fee payouts onchain. It must be a wallet account owned by your organization; addresses outside your org are rejected.
Submit the activity
Submit anACTIVITY_TYPE_EARN_DEPLOY_WRAPPER activity with the vault’s address (from the catalog), its CAIP-2 chain, and your fee configuration. For Aave, the catalog’s vaultAddress is the reserve’s underlying asset address; pass it through as-is. See Deploy Earn wrapper in the API reference for the full request/response schema and cURL example.
Aave only: Aave takes a small initial deposit at deployment and permanently locks it in the reserve, so a newly deployed Aave wrapper shows a small position straight away, about $1 for stablecoin reserves. Turnkey currently funds this deposit from its own wallet. See Aave’s deployment docs.
wrapperAddress: the deposit target for this vault.splitterAddress: the fee splitter that distributes fees between you and Turnkey (aPaymentSplitterfor Morpho, aRevenueSplitterOwnerfor Aave).deployRequestId: poll handle for the deployment transaction.
Poll deployment status
The activity completes when the deployment transaction is broadcast, not when it confirms. Pollget_earn_deploy_status with the deployRequestId until it reports COMPLETED before accepting deposits. status is PENDING, COMPLETED, or FAILED; on COMPLETED the response carries the deployTxHash, and on FAILED it includes an error field with the reason.
Gas and idempotency
Wrapper deployment gas costs are currently covered by Turnkey’s infrastructure and are not charged to you or your users. This is subject to change. Deployments are also idempotent: resubmitting the activity with identical parameters re-derives the same wrapper and splitter addresses and skips the broadcast if the contracts already exist, so retries are safe.
Next steps
- Browse the vault catalog to pick vaults to enable
- Deposit into a vault once the deployment is
COMPLETED - Review the fee model