sponsor_fees it is charged to your partner funding balance instead, so the user gets the full quoted output.
canPayGas(owner) on a chain adapter tells you whether the wallet could pay for a normal deposit, which is the usual trigger for switching to one of these paths.
Send from your own wallet
Nothing binds the depositor. The quote binds therecipient and the refund_address; the deposit itself can come from any wallet that holds the tokens and pays its own gas. If you custody the source funds, or move them to a treasury wallet first, deposit from that wallet and put the user as recipient.
refund_address to your own wallet, not the user’s: if the order cannot be fulfilled, the refund returns the deposit on the source chain, and it should come back to the wallet that sent it.
This is a normal deposit in every other respect. The entry point, allowance handling, and tracking are exactly as described in Deposit on EVM and Deposit on Solana, and you pay the source-chain gas directly.
Relay the deposit yourself
When the user holds the tokens but should not send a transaction, you can be the relayer instead of the operator. The router’s witness entry points are permissionless: the user signs a permit2 witness signature bound to the quote hash, and any wallet can submitdepositTokenWithPermit2Witness and pay the gas. Request a normal quote, not a gasless one; the sponsor_gas component prices the operator’s relay, and here you are relaying.
routerAddress is the chain’s router from GetChains, which is both the transaction target and the spender in the typed data. The witness binds the signature to the quote hash, so it authorizes exactly this deposit and nothing else. The user needs a standing permit2 allowance on the token; for EIP-2612 tokens the last argument takes a permit signature approving permit2 instead, collected in the same signing session.
When the quote has a source swap (src_token differs from bridge_token_src), use permit2WitnessSwapDepositTypedData and depositWithSwapAndPermit2Witness with the aggregator and calldata from GetSwapInstructions; the witness additionally binds bridge_token and min_bridge_out.
On Solana there is no signature scheme to relay: build the deposit with your own wallet as fee payer, have the user sign it, co-sign, and send it yourself.
Gasless through the API
When you would rather not run relaying infrastructure, request the quote withgasless: true. The user signs an authorization instead of sending a transaction (a permit2 witness signature on EVM, a sponsor-paid transaction on Solana), you submit it through SubmitGaslessOrder, and an operator wallet lands the deposit and pays its gas.
The relay cost is priced into the quote as the sponsor_gas fee component, so it comes out of the user’s output like any other fee.
GetChains reports gasless: true.
Pay the relay yourself with sponsor_fees
Add sponsor_fees: true to a gasless quote to charge the relay gas to your partner funding balance instead of the user’s output. The sponsor_gas component disappears from the fee breakdown, amount_out is what the user actually receives, and each sponsored order debits your prepaid balance.
- The quote must be requested with your
x-api-key; without one it fails withsponsor_fees requires an api key. - Your funding balance must be positive when the order is submitted, or
SubmitGaslessOrderfails withinsufficient funding balance.
fundPartner entry point on the designated chain and watch it in the partner panel or through ListPartnerFundingActivity, where each sponsored order appears as a debit carrying its quote_hash.
Choosing a path
Sending from your own wallet works on every chain and token, including native deposits. The other three keep custody with the user end to end and need a non-native source token. Relaying yourself gives you control over submission and works from any wallet you run; gasless through the API needs no infrastructure but is limited to source chains where
GetChains reports gasless: true.