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

Web3 Services: April 2024 Updates

Recapping this month's Web3 Services updates: Console Faucet and React Native SDK for user-controlled wallets.

How Programmable Wallets & Debit Cards can Enable USDC-Powered Fiat Payments

Coupling Programmable Wallets that hold USDC with debit cards expands the real-world use of digital dollars. Learn how to connect cards with USDC

How to Build Cross-Border Payments Solution with Circle USDC

Using Programmable Wallets you can quickly build a global payroll solution that is fast and efficient. Learn more.

Developer Events

May
28
2024

Developer Workshop at Rosewood São Paulo

São Paulo, Brazil
Jun
20
2024

Solana Summit APAC

Kuala Lumpur, Malaysia
Jun
28
2024

Hack4Bengal

Kolkata, West Bengal
Jul
05
2024

Solana Hacker House London

London, UK
Jul
08
2024

EthCC

Brussels, Belgium
Jul
12
2024

ETHGlobal Brussels

Brussels, Belgium
Jul
24
2024

EDCON 2024

Tokyo, Japan
Jul
26
2024

Solana Hacker House Bengaluru

Bengaluru, India
Sep
19
2024

Solana Breakpoint

Singapore
Sep
20
2024

ETHGlobal Singapore

Singapore
Oct
18
2024

ETHGlobal San Francisco

San Francisco, CA
Nov
15
2024

ETHGlobal Bangkok

Bangkok, Thailand
1
2
3
4
5
6
7

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.