Send Usdc
Automate and integrate Send USDC transactions and workflows
Send USDC is a community skill for implementing USDC stablecoin transfers in applications, covering wallet integration, token transfer execution, transaction confirmation, gas estimation, and multi-chain USDC sending patterns.
What Is This?
Overview
Send USDC provides patterns for building stablecoin transfer features in decentralized applications. It covers wallet connection and balance checking for USDC tokens on supported chains, ERC-20 token transfer execution using the USDC contract approve and transfer methods, transaction confirmation with receipt polling and status tracking, gas estimation and fee display so users understand transaction costs before sending, and multi-chain support for USDC on Ethereum, Polygon, Arbitrum, and Base networks. The skill enables developers to build payment and transfer flows using the most widely adopted stablecoin.
Who Should Use This
This skill serves Web3 developers building payment features with stablecoin transfers, teams creating remittance or payroll applications using USDC, and engineers integrating stablecoin payments into existing platforms.
Why Use It?
Problems It Solves
Sending ERC-20 tokens requires interacting with smart contract methods rather than simple native transfers. Gas estimation for token transfers differs from native currency sends and varies by network congestion. Transaction confirmation needs polling or event listeners to detect completion. Multi-chain USDC uses different contract addresses per network requiring chain-aware configuration.
Core Highlights
Token balance reader queries USDC contract for current holdings. Transfer builder constructs and sends ERC-20 transfer transactions. Confirmation tracker polls for transaction receipts with timeout handling. Chain config maps USDC contract addresses across supported networks.
How to Use It?
Basic Usage
import { ethers } from 'ethers';
const USDC_ABI = [
'function balanceOf('
+ 'address) view '
+ 'returns (uint256)',
'function transfer('
+ 'address to, '
+ 'uint256 amount) '
+ 'returns (bool)',
'function decimals() view '
+ 'returns (uint8)',
];
const USDC_ADDRESSES: Record<
number, string> = {
1: '0xA0b86991c6218b36c1d1'
+ '9D4a2e9Eb0cE3606eB48',
137: '0x3c499c542cEF5E3811e1'
+ '192ce70d8cC03d5c3359',
8453: '0x833589fCD6eDb6E08f4c'
+ '7C32D4f71b54bdA02913',
};
async function getBalance(
provider: ethers.Provider,
address: string,
chainId: number
): Promise<string> {
const usdc = new ethers.Contract(
USDC_ADDRESSES[chainId],
USDC_ABI, provider);
const raw =
await usdc.balanceOf(address);
const decimals =
await usdc.decimals();
return ethers.formatUnits(
raw, decimals);
}Real-World Examples
import { ethers } from 'ethers';
async function sendUSDC(
signer: ethers.Signer,
to: string,
amount: string,
chainId: number
) {
const usdc = new ethers.Contract(
USDC_ADDRESSES[chainId],
USDC_ABI, signer);
const decimals =
await usdc.decimals();
const parsed =
ethers.parseUnits(
amount, decimals);
// Estimate gas
const gasEstimate =
await usdc.transfer
.estimateGas(to, parsed);
// Send transfer
const tx = await usdc.transfer(
to, parsed, {
gasLimit:
gasEstimate * 120n / 100n,
});
// Wait for confirmation
const receipt =
await tx.wait(1);
return {
hash: tx.hash,
status: receipt?.status === 1
? 'confirmed' : 'failed',
gasUsed:
receipt?.gasUsed.toString(),
};
}
// Usage
const provider =
new ethers.BrowserProvider(
window.ethereum);
const signer =
await provider.getSigner();
const result = await sendUSDC(
signer,
'0xRecipientAddress',
'100.00',
1);
console.log(
`TX: ${result.hash}`);Advanced Tips
Add a gas buffer of 20 percent to estimated gas to prevent out-of-gas failures during network congestion. Use permit-based transfers (EIP-2612) where supported to combine approve and transfer into a single transaction. Implement transaction status polling with exponential backoff for confirmation.
When to Use It?
Use Cases
Build a peer-to-peer payment interface that sends USDC between wallet addresses. Create a payroll system that distributes USDC salary payments to employee wallets. Implement a cross-chain transfer flow that sends USDC on the cheapest network.
Related Topics
ERC-20 tokens, stablecoin transfers, blockchain transactions, gas estimation, and Web3 payments.
Important Notes
Requirements
Ethers.js or web3.js for interacting with ERC-20 contracts. A wallet provider for signing transactions. RPC endpoint for the target blockchain network.
Usage Recommendations
Do: verify the USDC contract address for each network before sending transactions. Display gas costs in the UI so users can confirm before signing. Check balance sufficiency before attempting transfers.
Don't: hardcode a single USDC address when supporting multiple chains with different contracts. Skip gas estimation which can result in failed transactions. Assume transaction success without waiting for receipt confirmation.
Limitations
USDC transfers require the sender to hold native currency for gas fees in addition to the USDC amount. Transaction confirmation times vary significantly across networks. Contract addresses may change if USDC is upgraded on a given network.
More Skills You Might Like
Explore similar skills to enhance your workflow
Feedoracle Compliance
MiCA compliance evidence and stablecoin risk scoring. Use when the user asks about stablecoin compliance, MiCA status, peg stability, or needs verifia
Hyperbrowser Automation
Automate Hyperbrowser tasks via Rube MCP (Composio)
Borneo Automation
Automate Borneo operations through Composio's Borneo toolkit via Rube MCP
Discordbot Automation
Automate Discordbot operations through Composio's Discordbot toolkit
Outlook
Microsoft Outlook API integration with managed OAuth. Read, send, and manage emails, folders
DOCX
Work smarter with DOCX file support across leading productivity and document management tools