Configure the infrastructure
Set bothbundlerUrl and paymasterUrl on the client config. They are required together. With
only one, the chain falls back to self-pay.
requireSponsorship: true makes a fee-token send throw SponsorshipUnavailableError (before
anything is signed) if the sponsored rail is not reachable, naming which side is missing. Leave it
false (the default) to let such a send degrade silently to self-pay.
Send with a fee token
Trigger the send through the provider with an EIP-5792wallet_sendCalls request. The per-send fee
token rides in the paymasterService capability’s context:
context.token; the provider then
falls back to the chain’s default registry fee token. If you use wagmi, its useSendCalls produces
the same request.
Confirm which rail ran
The returnedid is the intent id. Check the rail rather than assuming your configuration took
effect: use wallet_getCallsStatus, or on the core send path inspect receipt.rail. A sponsored
EVM receipt has rail: "sponsored", an id that is a userOpHash, and status: "pending" until
the bundler reports a receipt. See Receipts.