Funding with USDC
SPL Token transfers, testnet faucets, and dynamic top-up routing.
Runtime
Nomiqon wallets hold USDC on Solana — specifically the canonical USDC SPL Token issued by Circle. The mint address is EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v on mainnet-beta.
Mainnet transfer via CLI
bashnomiqon.com
# Using the Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
spl-token transfer \
--url https://api.mainnet-beta.solana.com \
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
50 \
<AGENT_WALLET_ADDRESS> \
--owner <YOUR_KEYPAIR_PATH> \
--fee-payer <YOUR_KEYPAIR_PATH>Mainnet transfer programmatically
typescriptnomiqon.com
import {
Connection, Keypair, PublicKey, Transaction,
sendAndConfirmTransaction,
} from "@solana/web3.js";
import {
getOrCreateAssociatedTokenAccount,
createTransferInstruction,
} from "@solana/spl-token";
import { bs58 } from "@project-serum/anchor/dist/cjs/utils/bytes";
const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const connection = new Connection("https://api.mainnet-beta.solana.com", "confirmed");
const payer = Keypair.fromSecretKey(bs58.decode(process.env.PAYER_SECRET_KEY!));
async function fundAgentWallet(agentWalletAddress: string, amountUsdc: number) {
const destination = new PublicKey(agentWalletAddress);
const sourceAta = await getOrCreateAssociatedTokenAccount(connection, payer, USDC_MINT, payer.publicKey);
const destinationAta = await getOrCreateAssociatedTokenAccount(connection, payer, USDC_MINT, destination);
const amount = BigInt(Math.round(amountUsdc * 1_000_000));
const tx = await sendAndConfirmTransaction(connection, new Transaction().add(
createTransferInstruction(sourceAta.address, destinationAta.address, payer.publicKey, amount)
), [payer]);
console.log("Funded:", tx);
}
await fundAgentWallet("6Tzt5ND...VovJn", 25.00);Devnet faucet (testing)
bashnomiqon.com
# Switch to devnet
solana config set --url devnet
solana airdrop 2 <AGENT_WALLET_ADDRESS>
spl-token mint 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU 100Dynamic top-up routing
Nomiqon fires a wallet.low_balance webhook when an agent wallet drops below 10% of its daily cap. Your backend can automatically top up from a treasury account:
typescriptnomiqon.com
// In your webhook handler (e.g. /api/webhooks/nomiqon)
app.post("/api/webhooks/nomiqon", async (req, res) => {
const event = nomiqon.webhooks.verify(req.body, req.headers["nomiqon-signature"]);
if (event.type === "wallet.low_balance") {
const { agentId, walletAddress, balance } = event.data;
await fundAgentWallet(walletAddress, 10.00);
console.log(`Topped up ${agentId}: new balance ~${balance} + 10 USDC`);
}
res.json({ received: true });
});