Documentation Index Fetch the complete documentation index at: https://coinvoyage-3c99945b.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
WalletProvider manages wallet connections for the CoinVoyage PayKit SDK. It wraps PayKitProvider in your provider tree and is required to use PayButton and usePayStatus. Without it, the payment modal cannot connect to a user’s wallet. You configure it through a config prop that accepts per-chain settings — you only need to supply configuration for the chains your application uses.
Setup
Import WalletProvider from @coin-voyage/paykit and wrap it around PayKitProvider:
"use client" ;
import { PayKitProvider , WalletProvider } from "@coin-voyage/paykit" ;
import { QueryClient , QueryClientProvider } from "@tanstack/react-query" ;
const queryClient = new QueryClient ();
export function Providers ({ children } : { children : React . ReactNode }) {
return (
< QueryClientProvider client = { queryClient } >
< WalletProvider
config = { {
evm: {
coinbase: {
appName: "My App" ,
},
walletConnect: {
projectId: "your-project-id" ,
},
},
solana: {
rpcUrl: "my-solana-rpc-url" ,
walletConfiguration: {
wallets: [ customWalletAdapter ()],
},
},
utxo: {
lazy: true ,
},
} }
>
< PayKitProvider apiKey = { process . env . NEXT_PUBLIC_COIN_VOYAGE_API_KEY ! } >
{ children }
</ PayKitProvider >
</ WalletProvider >
</ QueryClientProvider >
);
}
All config fields are optional. You can pass <WalletProvider> with no props and the SDK will use its default connector configuration.
Configuration options
Object containing chain-type-specific wallet configuration. Every sub-key is optional — include only the chains you need to customize.
config.evm
Configuration for EVM-compatible chains (Ethereum, Polygon, Arbitrum, Base, etc.). Lets you configure the bundled wallet connectors and add custom ones. Show EVM connector options
Configuration passed to the WalletConnect connector.
projectId (string) — your WalletConnect Cloud project ID. Required to enable WalletConnect across all EVM chains.
Configuration passed to the Coinbase Wallet connector.
appName (string) — the display name shown in the Coinbase Wallet app during connection.
Configuration passed to the MetaMask connector. Useful when you need to customize MetaMask-specific behavior or pass additional connector options.
config.solana
Configuration for the Solana chain. Provide a custom RPC endpoint or extend the list of supported wallet adapters. Custom Solana RPC URL. Use this to point to your own node or a premium RPC provider instead of the default public endpoint.
config.solana.walletConfiguration
Additional wallet adapter configuration.
wallets (array) — array of Solana wallet adapter instances to add alongside the default set.
config.sui
Configuration for the Sui chain. Custom Sui RPC URL for connecting to a specific full node.
config.sui.walletConfiguration
Additional wallet adapter configuration for the Sui chain.
config.utxo
Configuration for UTXO-based chains such as Bitcoin. When true, defers loading UTXO wallet connectors until they are actually needed. This can reduce initial bundle parsing time in applications where UTXO payments are infrequent.
Examples
Minimal setup
EVM with WalletConnect
Custom Solana RPC
Use WalletProvider with no configuration when the SDK defaults are sufficient: < WalletProvider >
< PayKitProvider apiKey = { process . env . NEXT_PUBLIC_COIN_VOYAGE_API_KEY ! } >
{ children }
</ PayKitProvider >
</ WalletProvider >
Supply your WalletConnect Cloud project ID to enable QR code and deep link connections across EVM chains: < WalletProvider
config = { {
evm: {
walletConnect: {
projectId: process . env . NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID ! ,
},
coinbase: {
appName: "My Store" ,
},
},
} }
>
< PayKitProvider apiKey = { process . env . NEXT_PUBLIC_COIN_VOYAGE_API_KEY ! } >
{ children }
</ PayKitProvider >
</ WalletProvider >
Point the Solana connector at a private RPC and add a custom wallet adapter: import { PhantomWalletAdapter } from "@solana/wallet-adapter-wallets" ;
< WalletProvider
config = { {
solana: {
rpcUrl: "https://my-rpc.example.com" ,
walletConfiguration: {
wallets: [ new PhantomWalletAdapter ()],
},
},
} }
>
< PayKitProvider apiKey = { process . env . NEXT_PUBLIC_COIN_VOYAGE_API_KEY ! } >
{ children }
</ PayKitProvider >
</ WalletProvider >