Skip to main content
Payment handlers connect wallets to payment schemes. Each handler knows how to sign payments for a specific blockchain. This page covers configuring the built-in handlers for Solana and EVM.
PaymentExecerV1 and PaymentHandlerV1 are deprecated. Use PaymentExecer and PaymentHandler instead. See the Client Types API reference for migration details.

Solana handler

The Solana handler supports:
  • SPL token transfers (USDC)
  • Native SOL transfers
  • Devnet, testnet, and mainnet-beta

SPL token payments

SPL token payments use the splToken scheme. The handler constructs a token transfer transaction and signs it with the wallet.

Native SOL payments

SOL payments use the exact scheme with native SOL as the asset. The handler constructs a system transfer and signs it.

EVM handler

The EVM handler supports:
  • EIP-3009 gasless USDC transfers
  • ERC-20 token transfers
  • Base, Base Sepolia, SKALE Europa Testnet, Polygon PoS, Polygon Amoy, Monad, Monad Testnet

Gasless payments

EIP-3009 payments are gasless. The client signs an EIP-712 typed message authorizing a transfer. The facilitator submits the transaction on-chain and pays the gas. The client never needs native tokens.

Using OWS wallets with handlers

OWS wallets are drop-in replacements for local wallets. Pass them to the same payment handler factories:
See Wallet Configuration for full OWS setup details.

Using both handlers

Register multiple handlers with the fetch wrapper to support both chains simultaneously:
The fetch wrapper passes 402 requirements to each handler. The first handler that can fulfill a requirement is used. To customize selection, provide a payerChooser — see Fetch Wrapper.

Further reading