For Developers
Methods
description: Detailed documentation for all window.xrpl methods
API Methods
🔌 Connection Methods
connect()
Requests connection to the user's wallet.
javascriptwindow.xrpl.connect(data?: object): Promise<string>
Parameters:
data
(optional): Additional connection data
Returns:
Promise<string>
: Connected wallet address
Example:
javascripttry { const address = await window.xrpl.connect(); console.log('Connected to:', address); } catch (error) { if (error.code === 4001) { console.log('User rejected connection'); } }
disconnect()
Disconnects the wallet from the DApp.
javascriptwindow.xrpl.disconnect(address?: string): Promise<void>
Parameters:
address
(optional): Specific address to disconnect
Example:
javascriptawait window.xrpl.disconnect(); console.log('Wallet disconnected');
changeAccount()
Switches to a different connected account.
javascriptwindow.xrpl.changeAccount(account: string): Promise<string>
Parameters:
account
: Address to switch to
Returns:
Promise<string>
: New active address
Example:
javascriptconst newAddress = await window.xrpl.changeAccount('rNewAddress...'); console.log('Switched to:', newAddress);
📝 Signing Methods
signMessage()
Signs an arbitrary message with the user's private key.
javascriptwindow.xrpl.signMessage(message: string): Promise<string>
Parameters:
message
: Message to sign
Returns:
Promise<string>
: Hex-encoded signature
Example:
javascriptconst message = 'Authenticate with DropFi'; const signature = await window.xrpl.signMessage(message); console.log('Signature:', signature);
sendTransaction()
Signs and optionally submits a transaction.
javascriptwindow.xrpl.sendTransaction(tx: object): Promise<object>
Parameters:
tx
: XRPL transaction object
Returns:
Promise<object>
: Transaction result
Example:
javascriptconst payment = { TransactionType: 'Payment', Account: window.xrpl.selectedAddress, Destination: 'rDestination...', Amount: '1000000', // 1 XRP in drops Fee: '12', // Optional, auto-calculated if omitted Sequence: 12345, // Optional, auto-filled if omitted LastLedgerSequence: 12345678 // Optional }; try { const result = await window.xrpl.sendTransaction(payment); console.log('Transaction hash:', result.hash); console.log('Result code:', result.resultCode); } catch (error) { console.error('Transaction failed:', error); }
🌐 Network Methods
switchNetwork()
Changes the active XRPL network.
javascriptwindow.xrpl.switchNetwork(network: string): Promise<object>
Parameters:
network
: Network name ('mainnet', 'testnet', 'devnet')
Returns:
Promise<object>
: Network details
Example:
javascriptconst result = await window.xrpl.switchNetwork('testnet'); console.log('Switched to:', result.network); console.log('Endpoint:', result.endpoint);
initialize()
Gets the current wallet state and connection info.
javascriptwindow.xrpl.initialize(): Promise<object>
Returns:
javascript{ selectedAddress: string | null, connectedAccounts: string[], network: string, endpoint: string }
Example:
javascriptconst state = await window.xrpl.initialize(); if (state.selectedAddress) { console.log('Already connected:', state.selectedAddress); console.log('Network:', state.network); }
🔧 Utility Methods
isConnected()
Checks if a wallet is currently connected.
javascriptwindow.xrpl.isConnected(): boolean
Returns:
boolean
: Connection status
Example:
javascriptif (window.xrpl.isConnected()) { showConnectedUI(); } else { showConnectButton(); }
📊 Transaction Types
Payment Transaction
javascriptconst payment = { TransactionType: 'Payment', Account: address, Destination: recipient, Amount: '1000000', // XRP in drops DestinationTag: 12345, // Optional Memos: [{ // Optional Memo: { MemoType: '74657374', // "test" in hex MemoData: '48656C6C6F' // "Hello" in hex } }] };
Trust Line Transaction
javascriptconst trustLine = { TransactionType: 'TrustSet', Account: address, LimitAmount: { currency: 'USD', issuer: 'rIssuerAddress...', value: '1000' }, Flags: 262144 // Optional: NoRipple flag };
NFT Mint Transaction
javascriptconst nftMint = { TransactionType: 'NFTokenMint', Account: address, URI: '697066733A2F2F...', // IPFS URI in hex Flags: 8, // Transferable TransferFee: 5000, // 5% royalty NFTokenTaxon: 0 };
AMM Deposit Transaction
javascriptconst ammDeposit = { TransactionType: 'AMMDeposit', Account: address, Asset: {currency: 'XRP'}, Asset2: { currency: 'USD', issuer: 'rIssuer...' }, Amount: '10000000', // 10 XRP LPTokenOut: '500000' // Expected LP tokens };
⚠️ Error Handling
Common Error Codes
Code | Description |
---|---|
4001 | User rejected request |
4100 | Unauthorized - not connected |
4200 | Unsupported method |
4900 | Disconnected during operation |
5000 | Internal wallet error |
Error Response Format
javascript{ code: 4001, message: "User rejected the request", data: {} // Additional error data }
Handling Errors
javascripttry { const result = await window.xrpl.sendTransaction(tx); } catch (error) { switch (error.code) { case 4001: showMessage('Transaction cancelled'); break; case 4100: await connectWallet(); break; default: showError(error.message); } }
💡 Best Practice: Always handle errors gracefully and provide clear feedback to users about what went wrong and how to proceed.