docs
Get startedTroubleshootingPaymentsWebhooksAgent paymentsSwop MCPOviIdentity (swop.id)SwivyRPC (preview)API reference

Gas sponsorship

Pay your users' network fees on the networks you choose, with per-user and per-day caps.

Preview: Swivy is not generally available

Swivy runs in staging only. Field names come from the executionPolicy.sponsorship section of Swivy's OpenAPI schema and can change. Request early access.

In plain words: every blockchain transaction costs a small network fee ("gas"). New users usually have no ETH or SOL to pay it. With sponsorship, a sponsor wallet you fund pays that fee for them, so their first transaction just works.

Turn it on

Sponsorship lives in your environment policy, under executionPolicy.sponsorship:

FieldWhat it does
enabledMaster switch.
autoSponsorTransactionsSponsor eligible transactions automatically.
sponsoredNetworksThe networks you pay gas on, for example ["base-mainnet"].
maxSpendPerUserUsdThe largest transaction value (in USD, from the intent's requestedValueUsd) that can be sponsored. Despite the name, it applies per transaction.
maxSpendPerDayUsdThe most you'll spend across the environment per day.
allowedContractAddressesOnly sponsor calls to these contracts (leave empty for any).
allowClientTransactionsWhether transactions built client-side can be sponsored.
requireAdminApprovalHold sponsored transactions for an operator's approval.
relayerModeswivy_managed (Swivy runs the sponsor wallets) or organization_managed (you do).
fundingSourceHow sponsor wallets are topped up: rails (crypto, stripe), deposit addresses and a low-balance alert.
{
  "executionPolicy": {
    "requireMfa": true,
    "hostedExecution": true,
    "maxTransactionValueUsd": 500,
    "sponsorship": {
      "enabled": true,
      "autoSponsorTransactions": true,
      "sponsoredNetworks": ["base-mainnet"],
      "maxSpendPerUserUsd": 2,
      "maxSpendPerDayUsd": 50,
      "relayerMode": "swivy_managed"
    }
  }
}

How a sponsored transaction runs

  1. Your app submits an execute_transaction intent as usual.
  2. Swivy checks the network, the contract and your caps.
  3. If it qualifies, sponsorship logic runs before signing, then Swivy broadcasts through your configured RPC.
  4. The environment dashboard shows sponsor wallet balances per network.

Things to know

  • Sponsorship pays network fees only, not the value being sent.
  • On Solana, opening a token account for a first-time recipient needs a small refundable rent deposit. That's a Solana rule, not a Swivy fee.
  • Set caps before you enable it. An uncapped sponsor wallet is an open tab.

Sponsorship modes (in review)

Building

Built and in review, not on staging yet. Today Swivy sponsors by sending native gas to the user's wallet before a send, and the user can withdraw it. The new modes leave nothing to withdraw:

FieldValuesWhat it does
solanaModefee_payer or prefund (default)fee_payer makes the sponsor the fee payer of the user's transaction. Get the address from GET /v1/runtime/sponsorship/fee-payer and use it as the transaction's payer. Swivy checks the transaction and simulates it before the sponsor co-signs.
evmModeexact_gas or prefund (default)exact_gas sends exactly that transaction's worst-case gas and no more.
maxSponsoredTransactionsPerAccountPerDaynumber or nullA per-wallet cap on sponsored sends per UTC day.
solanaMaxPriorityFeeLamportsnumber, default 50,000The largest priority fee the sponsor will pay.
solanaMaxTokenAccountCreationsnumber, default 1How many token accounts the sponsor may open per transaction.

In fee-payer mode the sponsor only signs if:

  • it is used as the fee payer and nowhere else, except to pay for opening a token account;
  • the transaction uses no address lookup tables;
  • the simulation shows it losing no more than the fees.

On this page