Troubleshooting
Common issues and solutions.
SDK Issues
”Vault not found”
Problem: Trying to use a vault that does not exist for the selected mint.
Solution:
await client.initVault(tokenMint);“Insufficient funds”
Problem: Not enough available balance for the operation.
Solution:
const vault = await client.getVault(tokenMint);
console.log("Available:", vault?.available.toString());
console.log("Reserved:", vault?.reserved.toString());
await client.deposit(amount, tokenMint);“Schedule not active”
Problem: Trying to act on a paused or cancelled schedule.
Solution:
const schedule = await client.getSchedule(schedulePda);
console.log("Status:", schedule?.status);
if (schedule?.status === "Paused") {
await client.pauseSchedule(schedulePda, false);
}Coordinator Issues
”ECONNREFUSED” when registering
Problem: Coordinator is not running or not reachable.
Solution:
cd coordinator
npm run dev“429 Too Many Requests”
Problem: The coordinator’s rate limiter rejected the request.
Solution:
- back off and retry after the indicated delay
- avoid repeatedly resubmitting the same registration payload
- if you operate the coordinator, review the configured rate-limit budgets
”Database connection error”
Problem: PostgreSQL is not configured correctly or is unavailable.
Solution:
pg_isready
cd coordinator
npm run db:migrate“ER authority keypair not found”
Problem: The coordinator cannot load the ER authority signer.
Solution:
solana-keygen new -o er-authority-keypair.jsonThen point the coordinator at the file or provide ER_AUTHORITY_KEYPAIR_JSON / ER_AUTHORITY_KEYPAIR_B64.
Transaction Issues
”Blockhash not found”
Problem: The transaction expired before confirmation.
Solution: Retry the transaction so the wallet signs with a fresh blockhash.
”Insufficient funds for fees”
Problem: The wallet does not have enough SOL for transaction fees.
Solution:
solana airdrop 2Program Issues
”Program not found”
Problem: Wrong program ID or missing deployment.
Solution:
- verify the deployed program ID
- verify the SDK / app is pointed at the correct cluster
- redeploy if needed
”Invalid account”
Problem: A PDA or account owner does not match what the instruction expects.
Solution:
- derive PDAs with SDK helpers
- make sure vault PDAs include both employer and token mint
- make sure schedule PDAs are derived from the vault PDA and
scheduleId
Merkle Issues
”Invalid Merkle proof”
Problem: The provided proof does not match the stored root.
Solution:
const { root, proofs } = buildMerkleTree(recipients);Verify you rebuilt the tree from the exact same ordered recipient list.
”Recipient not found”
Problem: The address is not part of the original schedule payload.
Solution:
- confirm the recipient is in the original list
- confirm the amount matches exactly
- rebuild proofs from the same ordered list used during registration