Skip to main content
Send USDC by submitting an ERC-20 transfer contract call from an authenticated non-custodial wallet.
Start with the quickstart for your SDK first: TypeScript, React Native, Swift, or Kotlin.Kotlin snippets call suspend SDK APIs; run them from a coroutine.
The examples assume the SDK has an active wallet session. USDC uses 6 decimals, so 1.00 USDC is the raw base-unit value 1000000. The snippets use native USDC on Polygon PoS mainnet at 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359. To test on Polygon Amoy, switch the network value and use a test ERC-20 contract with 6 decimals.
These examples submit a mainnet transaction. The wallet needs enough USDC for the transfer and, when the preparation response is not sponsored, enough balance in one of the returned fee tokens. Testnet transaction fees are sponsored; mainnet preparation may instead return fee options.
The SDK uses the same transaction lifecycle for this contract call as for a native transfer. Check status and statusResolution rather than treating the presence of txnId as success. Preserve txnId and query transaction status before retrying when polling times out or the outcome is uncertain.