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

Building an Emerging Market Digital Dollar Account

The emergence of the blockchain and USDC stablecoin makes it possible to quickly and easily create digital dollar accounts for emerging markets. Learn more.

Upcoming support for Polygon PoS Amoy testnet

Learn about expanded support for Polygon PoS Amoy testnet to better serve developers building with Circle. We encourage developers to migrate to Amoy at your earliest convenience.

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.

Developer Events

Apr
15
2024

Solana Hacker House Dubai

Dubai, UAE
Apr
29
2024

5th Annual International Tech Summit

Hamilton, Bermuda
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.

Services are provided by Circle Technology Services, LLC (“CTS”). Services do not include financial, investment, tax, legal, regulatory, accounting, business, or other advice. CTS is only a provider of software and related technology and is not engaged in any regulated money transmission activity in connection with the services it provides. For additional details, please click here to see the Circle Developer terms of service.