Skip to main content

Overview

Send Solana transactions with near-instant finality. Monei handles signing, fees, and broadcasting on your behalf — you get back a transaction signature you can use to verify and track the transaction on any Solana block explorer. What you’ll learn:
  • Send SOL and SPL tokens
  • Track transaction status via block explorers
  • Understand Solana transaction states
  • Handle transaction failures

How It Works

Monei is a custodial wallet. This means:
  • You don’t manage private keys or RPC connections
  • Monei signs and broadcasts the transaction on your behalf
  • Transaction fees (lamports) are handled internally — you don’t estimate or set them
  • After a transaction is sent, Monei returns a signature you can use to verify it on any Solana block explorer
  • Blockchain transactions are not stored on Monei’s backend — use an explorer for on-chain details

Transaction Types

SOL Transfer

Send native SOL to any address

SPL Token Transfer

Send USDC, USDT, or any SPL token

Send SOL

Transfer native SOL to another Solana address.
import MoneiSDK from 'monei-sdk';

const monei = new MoneiSDK({
  apiKey: process.env.MONEI_API_KEY,
});

// Send 0.5 SOL
const tx = await monei.solana.transferSol({
  to: '9B5XszUGdMaxCZ7uSQhPzdks5ZQSmWxrmzCSvtJ6Ns6g',
  amount: '0.5',
  network: 'mainnet-beta', // optional, defaults to mainnet-beta
});

console.log('Transaction Signature:', tx.signature);
console.log('View on Solscan:', `https://solscan.io/tx/${tx.signature}`);
console.log('View on Explorer:', `https://explorer.solana.com/tx/${tx.signature}`);
Request Parameters:
ParameterTypeRequiredDescription
tostringYesRecipient Solana address (Base58)
amountstringYesAmount in SOL (e.g., "0.5" for 0.5 SOL)
networkstringNoNetwork: mainnet-beta, devnet, testnet (default: mainnet-beta)
Response:
{
  "statusCode": 200,
  "message": "Transfer successful",
  "data": {
    "signature": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnTPLgTLpjvS3yJG3TBhVLiYt5mMXe4EH7zJ2VSkQfpYjG"
  }
}
Note: Save the signature from the response — this is your reference for tracking the transaction on-chain.

Send SPL Token

Transfer SPL tokens like USDC, USDT, or any SPL token.
// Send 100 USDC
const tx = await monei.solana.transferToken({
  to: '9B5XszUGdMaxCZ7uSQhPzdks5ZQSmWxrmzCSvtJ6Ns6g',
  tokenMintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC mint
  amount: '100',
  network: 'mainnet-beta',
});

console.log('Transaction Signature:', tx.signature);
console.log('View on Solscan:', `https://solscan.io/tx/${tx.signature}`);
Request Parameters:
ParameterTypeRequiredDescription
tostringYesRecipient Solana address
tokenMintAddressstringYesSPL token mint address
amountstringYesAmount in token units
networkstringNoNetwork (default: mainnet-beta)
Response:
{
  "statusCode": 200,
  "message": "Token transfer successful",
  "data": {
    "signature": "3yKGPvn2mVTpVqKLh9nWxkqVZL9RHkP2Uh8N5GqYqR7rRqKJ3sVHnT8LJ5VYqR7rRqKJ3sVHnT8LJ5VYqR7rR"
  }
}

Transaction Lifecycle

Solana transactions are extremely fast with near-instant finality. Transaction States:
StateDescriptionApproximate Time
InitiatedTransaction created and submitted by MoneiInstant
BroadcastSent to the Solana network~0.1s
ConfirmedIncluded in a block~0.4s
FinalizedConfirmed by supermajority of the cluster~1.0s
FailedTransaction rejected or reverted~0.5s

Tracking Transactions

Since Monei does not store blockchain transactions on its backend, use the signature returned from the send response to track your transaction directly on a Solana block explorer. Confirmation Levels:
LevelDescriptionApproximate Time
processedTransaction processed by a node~0.4s
confirmedConfirmed by the cluster~0.8s
finalizedFinalized with supermajority~1.0s
For important transfers, wait for finalized status before treating the transaction as complete.

Block Explorers

URL: https://solscan.io/tx/{signature}Features:
  • Detailed transaction info
  • Token transfers breakdown
  • Account changes
  • Fee breakdown
Example:
https://solscan.io/tx/5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnTPLgTLpjvS3yJG3TBhVLiYt5mMXe4EH7zJ2VSkQfpYjG

Speed Comparison

NetworkBlock TimeFinalityTypical Confirmation
Solana~0.4s~1.0s1–2 seconds
Ethereum~12s~3 min3–5 minutes
BSC~3s~45s~1 minute
Polygon~2s~4 min4–5 minutes
Base~2s~2s2–5 seconds
Arbitrum~0.25s~1 min1–2 minutes

Troubleshooting

Cause: The sending wallet did not have enough SOL or token balance to complete the transfer.Solution: Ensure your Monei wallet holds sufficient balance before initiating a transfer. For SPL token transfers, the wallet also needs a small SOL balance — Monei handles fees internally, but if the custodial wallet’s SOL balance is too low to cover lamport costs, the transaction may fail. Contact support if this persists.
Cause: The recipient address does not have an existing token account for the SPL token being sent.What happens: Monei will automatically create the recipient’s token account as part of the transfer. This incurs a one-time rent fee (~0.002 SOL) which is handled internally.Note: If the transfer fails due to this, contact support with your request details.
Common causes:
  • Insufficient wallet balance for the transfer amount
  • Invalid token mint address
  • Invalid recipient address format
Solution: Verify the recipient address is a valid Base58 Solana address (32–44 characters), confirm the token mint address is correct, and ensure the wallet holds sufficient balance.
Normal confirmation time: 1–2 secondsActions:
  1. Check the transaction on Solscan or Solana Explorer using your signature
  2. Check the Solana network status at status.solana.com
  3. Contact Monei support with your signature if the transaction is still unconfirmed after 1 minute
Cause: The recipient address is not a valid Solana address.Valid Solana address format:
  • Base58 encoded
  • 32–44 characters
  • Only alphanumeric characters (no 0, O, I, or l)
  • Example: 9B5XszUGdMaxCZ7uSQhPzdks5ZQSmWxrmzCSvtJ6Ns6g
Solution: Double-check the recipient address before sending. Solana addresses are case-sensitive.

Best Practices

Verify Addresses

Always verify the recipient address before sending — Solana transactions are irreversible

Test Small First

Send a small test amount before large transfers

Save the Signature

Always store the signature from the response — it’s your only reference for tracking the transaction on-chain

Verify on Explorer

Use Solscan or Solana Explorer to confirm finality before treating a transaction as complete

Next Steps

Wallet Operations

Learn about Solana wallet management

Token Swaps

Swap SOL and SPL tokens on Jupiter

Transaction Management

Advanced transaction filtering

EVM Transactions

Compare with EVM transactions