Circle Developers

Build next-gen applications

Create the next revolutionary app powered by digital currency and secure Web3 wallets.

Build

Scale seamlessly with USDC and Web3 tools

Get started with USDC

USDC is an open-source digital dollar that transcends borders and bank accounts and is available natively on the top blockchains. Developers use USDC to programmatically transfer, validate, and store digital currency faster and more cost-efficiently than traditional payment systems.

Stablecoin Documentation

*Circle is also the sole issuer of EURC, a fully backed euro stablecoin that is open and available for developers to build on today.

Extend your app with CCTP

Reach more users by enabling cross-chain payments, swaps, and deposits with Cross-Chain Transfer Protocol (CCTP), a permissionless on-chain utility that facilitates USDC transfers between supported blockchains via native burning and minting.

CCTP Documentation

Access tools to build in Web3

Discover an easier, faster way to create production-ready Web3 applications. Embed and transact with MPC wallets using REST APIs and SDKs, and support your wallets' on-chain interactions by deploying and interacting with smart contracts. With robust tools and built-in node infrastructure, you can build secure Web3 apps quickly – all while abstracting complexity away from end users.

Web3 Services Documentation

async function main() {
    const decimals = await contract.methods.decimals().call();
    const balance = await
    contract.methods.balanceOf(fromAddress).call();
    console.log('USDC balance:', balance / (10 ** decimals));
    let value = amount * (10 ** decimals);
    let data = contract.methods.transfer(toAddress, value).encodeABI();
    const transaction = {
      'to': tokenAddress,
      'gas': Web3.utils.toHex(100000),
      'data': data
    };
    const signedTx = await
    web3.eth.accounts.signTransaction(transaction, privatekey);
    return web3.eth.sendSignedTransaction(signedTx.rawTransaction,
    function (error, hash) {
      if (!error) {
        console.log("Tx Hash: ", hash);
      } else {
        console.log("Error sending Tx:", error)
      }
    });
  }

  main().then(receipt => console.log("Tx Receipt:", receipt));
// Facilitate a burn of the specified amount of USDC on the source chain
const burnTx = await ethTokenMessengerContract.methods.depositForBurn(amount, AVAX_DESTINATION_DOMAIN, destinationAddressInBytes32,
USDC_ETH_CONTRACT_ADDRESS).send();

// Hashes burn event transaction log
const transactionReceipt = await
web3.eth.getTransactionReceipt(burnTx.transactionHash);
const eventTopic = web3.utils.keccak256('MessageSent(bytes)');
const log = transactionReceipt.logs.find((l) => l.topics[0] === eventTopic);
const messageBytes = web3.eth.abi.decodeParameters(['bytes'], log.data)[0];
const messageHash = web3.utils.keccak256(messageBytes);

// Request the attestation of the burn event from Circle
let attestationResponse = { status: 'pending' };
while (attestationResponse.status !== 'complete') {
  const response = await
fetch(`https://iris-api-sandbox.circle.com/attestations/${messageHash}`);
  attestationResponse = await response.json();
  await new Promise(r => setTimeout(r, 2000));
}

// Enable USDC to be minted on the destination chain
const receiveTx = await
avaxMessageTransmitterContract.receiveMessage(receivingMessageBytes, signature);
import axios from 'axios';

const options = {
  method: 'POST',
  url: 'https://api.circle.com/v1/w3s/developer/transactions/contractExecution',
  headers: {
    Authorization: 'Bearer ${API_KEY}',
    accept: 'application/json',
    'content-type': 'application/json'
  },
  data: {
    abiFunctionSignature: 'transfer(address,uint256)',
    idempotencyKey: '23c4e3d8-62b1-4dca-a08a-b3f28f4a81bf',
    contractAddress: '',
    feeLevel: 'MEDIUM',
    walletId: '${WALLET_ID}',
    entitySecretCiphertext: '${ENTITY_SECRET_CIPHERTEXT}'
  }
};

try {
  const { data } = await axios.request(options);
  console.log(data);
} catch (error) {
  console.error(error);
}

Get started with USDC

USDC is an open-source digital dollar that transcends borders and bank accounts and is available natively on the top blockchains. Developers use USDC to programmatically transfer, validate, and store digital currency faster and more cost-efficiently than traditional payment systems.

Stablecoin Documentation

*Circle is also the sole issuer of EURC, a fully backed euro stablecoin that is open and available for developers to build on today.

async function main() {
    const decimals = await contract.methods.decimals().call();
    const balance = await
    contract.methods.balanceOf(fromAddress).call();
    console.log('USDC balance:', balance / (10 ** decimals));
    let value = amount * (10 ** decimals);
    let data = contract.methods.transfer(toAddress, value).encodeABI();
    const transaction = {
      'to': tokenAddress,
      'gas': Web3.utils.toHex(100000),
      'data': data
    };
    const signedTx = await
    web3.eth.accounts.signTransaction(transaction, privatekey);
    return web3.eth.sendSignedTransaction(signedTx.rawTransaction,
    function (error, hash) {
      if (!error) {
        console.log("Tx Hash: ", hash);
      } else {
        console.log("Error sending Tx:", error)
      }
    });
  }

  main().then(receipt => console.log("Tx Receipt:", receipt));

Extend your app with CCTP

Reach more users by enabling cross-chain payments, swaps, and deposits with Cross-Chain Transfer Protocol (CCTP), a permissionless on-chain utility that facilitates USDC transfers between supported blockchains via native burning and minting.

CCTP Documentation

// Facilitate a burn of the specified amount of USDC on the source chain
const burnTx = await ethTokenMessengerContract.methods.depositForBurn(amount, AVAX_DESTINATION_DOMAIN, destinationAddressInBytes32,
USDC_ETH_CONTRACT_ADDRESS).send();

// Hashes burn event transaction log
const transactionReceipt = await
web3.eth.getTransactionReceipt(burnTx.transactionHash);
const eventTopic = web3.utils.keccak256('MessageSent(bytes)');
const log = transactionReceipt.logs.find((l) => l.topics[0] === eventTopic);
const messageBytes = web3.eth.abi.decodeParameters(['bytes'], log.data)[0];
const messageHash = web3.utils.keccak256(messageBytes);

// Request the attestation of the burn event from Circle
let attestationResponse = { status: 'pending' };
while (attestationResponse.status !== 'complete') {
  const response = await
fetch(`https://iris-api-sandbox.circle.com/attestations/${messageHash}`);
  attestationResponse = await response.json();
  await new Promise(r => setTimeout(r, 2000));
}

// Enable USDC to be minted on the destination chain
const receiveTx = await
avaxMessageTransmitterContract.receiveMessage(receivingMessageBytes, signature);

Access tools to build in Web3

Discover an easier, faster way to create production-ready Web3 applications. Embed and transact with MPC wallets using REST APIs and SDKs, and support your wallets' on-chain interactions by deploying and interacting with smart contracts. With robust tools and built-in node infrastructure, you can build secure Web3 apps quickly – all while abstracting complexity away from end users.

Web3 Services Documentation

import axios from 'axios';

const options = {
  method: 'POST',
  url: 'https://api.circle.com/v1/w3s/developer/transactions/contractExecution',
  headers: {
    Authorization: 'Bearer ${API_KEY}',
    accept: 'application/json',
    'content-type': 'application/json'
  },
  data: {
    abiFunctionSignature: 'transfer(address,uint256)',
    idempotencyKey: '23c4e3d8-62b1-4dca-a08a-b3f28f4a81bf',
    contractAddress: '',
    feeLevel: 'MEDIUM',
    walletId: '${WALLET_ID}',
    entitySecretCiphertext: '${ENTITY_SECRET_CIPHERTEXT}'
  }
};

try {
  const { data } = await axios.request(options);
  console.log(data);
} catch (error) {
  console.error(error);
}
Access USDC Directly

Mint and deposit USDC at scale

Eligible enterprise developers can leverage Circle Mint and corresponding APIs to mint and redeem USDC at scale, 24/7, directly from your business bank account. Circle also provides APIs for making crypto deposits and payouts to and from your Circle Mint account, including USDC across supported blockchains.

  • Mint and redeem via API or Web UI
  • Webhook notifications to be notified automatically when a transaction occurs
  • SDKs to quickly get your codebase up and running
  • APIs for programmable on chain transactions
Connect

Join the Circle developer community

Catch us live at industry events and chat with us on Discord 24 hours a day, Monday-Friday. Our dedicated team is here to answer questions, collect product feedback, and provide outlets to engage with fellow blockchain developers.

Resources for Developers

Leveraging Smart Contracts to Manage Loyalty Points

Leveraging smart contracts for blockchain loyalty programs can help foster innovative experiences and enable brands to expand their reach. Learn more.

New Pre-Mint Address for USDC on Solana

Ahead of mainnet launch for Cross-Chain Transfer Protocol (CCTP) on Solana, we’ve added a new pre-mint address for USDC on Solana. Learn more.

Web3 Services: February 2024 Updates

A recap of this month's Web3 Services updates: extended Ethereum support, guides for user-controlled wallets, and improved gas fee experiences.

Developer Events

Mar
21
2024

ETHTaipei 2024

Taipei City, Taipei
Mar
28
2024

Solana Hacker House NYC

New York, NY
Apr
15
2024

Solana Hacker House Dubai

Dubai, UAE
Jul
05
2024

Solana Hacker House London

London, UK
Jul
08
2024

EthCC

Brussels, Belgium
Jul
12
2024

ETHGlobal Brussels

Brussels, Belgium
Jul
26
2024

Solana Hacker House Bengaluru

Bengaluru, India
Sep
20
2024

ETHGlobal Singapore

Singapore, Singapore
Oct
18
2024

ETHGlobal San Francisco

San Francisco, CA
Nov
15
2024

ETHGlobal Bangkok

Bangkok, Thailand
1
2
3
4
5
6

Join the growing ecosystem of developers building with USDC.

Programmable Wallets and Smart Contract Platform application programming interface (“API”) is offered by Circle Technology Services, LLC (“CTS”). CTS is not a regulated financial services company and the API does not include financial, investment, tax, legal, regulatory, accounting, business, or other advice. For additional details, please click here to see the Circle Developer terms of service.