Quickstart: Deposit via Funds Transfer

Learn the basics of sending funds to your Circle account from an external bank account.

Sending funds to your Circle Account from an external bank account is one of the basic primitives (building blocks) enabled by the APIs. This quickstart walks through depositing USDC USD from an external bank account. You can follow the same steps when sending EURC EUR as well.

1. Get an API key

Circle's APIs use API keys as the mechanism to authenticate client requests. The API key must be set in the Authorization header of the request sent from your backend server. The format of the header is Bearer secret-key-value.

To obtain an API key for the sandbox environment, simply create an account and generate a new key in settings - it only takes a few seconds.

GET AN API KEY

Once you have generated your API key, record it in a secure place.

2. Link a bank account

To send account funds from an external bank account, you will first need to add the bank account you will be using to your Circle Mint Account. https://developers.circle.com/circle-mint/reference/createbusinesswireaccount

Add Create A Wire Bank Account walkthrough

NOTE - the parameters listed below are slightly different for US Bank accounts, Non-US bank accounts - IBAN supported and Non-US bank accounts - non-IBAN supported. Please see the above link for details.

REQUEST

curl --request POST \\
--url https\://api-sandbox.circle.com/v1/businessAccount/banks/wires \\
--header 'accept: application/json' \\
--header 'authorization: Bearer SAND\_API\_KEY:1f2ae4652d18814652aa8b9748f66d4b:e28164c99b17fdf725aba33fe52ec3a7' \\
--header 'content-type: application/json' \\
--data '

{
  "billingDetails": {
    "name": "Satoshi Nakamoto",
    "city": "Boston",
    "country": "US",
    "line1": "100 Money Street",
    "district": "MA",
    "postalCode": "01234"
  },
  "bankAddress": {
    "bankName": "SAN FRANCISCO",
    "city": "SAN FRANCISCO",
    "country": "US",
    "line1": "100 Money Street",
    "district": "CA"
  },
  "idempotencyKey": "ba943ff1-ca16-49b2-ba55-1057e70ca5c7",
  "accountNumber": "12340010",
  "routingNumber": "121000248"
}

'

RESPONSE

{
  "data": {
    "id": "9d1fa351-b24d-442a-8aa5-e717db1ed636",
    "status": "pending",
    "description": "WELLS FARGO BANK, NA ****0010",
    "trackingRef": "CIR2GKYL4B",
    "fingerprint": "a9a71b77-d83d-4fbc-997f-41a33550c594",
    "virtualAccountEnabled": true,
    "billingDetails": {
      "name": "Satoshi Nakamoto",
      "line1": "100 Money Street",
      "city": "Boston",
      "postalCode": "01234",
      "district": "MA",
      "country": "US"
    },
    "bankAddress": {
      "bankName": "WELLS FARGO BANK, NA",
      "line1": "100 Money Street",
      "city": "SAN FRANCISCO",
      "district": "CA",
      "country": "US"
    },
    "createDate": "2023-11-04T20:02:21.062Z",
    "updateDate": "2023-11-04T20:02:21.062Z"
  }
}

3. Get wire instructions

You can easily retrieve all necessary details to make a deposit from your bank account by using the GET Wire Instructions endpoint. It will return the beneficiary details, bank details, and a confirmation of the currency.

REQUEST

Replace ${YOUR\_API\_KEY} with your API key.

Replace ${TRANSFER\_ID} with the id of the transfer you created earlier.

curl -H "Authorization: Bearer ${YOUR\_API\_KEY}" \\

-X GET https\://api-sandbox.circle.com/v1/businessAccount/banks/wires/b3d9d2d5-4c12-4946-a09d-953e82fae2b0/instructions?currency=USD

RESPONSE

The response should look like this:

{
  "data": {
    "trackingRef": "CIR22FEP33",
    "beneficiary": {
      "name": "CIRCLE INTERNET FINANCIAL INC",
      "address1": "1 MAIN STREET",
      "address2": "SUITE 1"
    },
    "virtualAccountEnabled": true,
    "beneficiaryBank": {
      "name": "CRYPTO BANK",
      "address": "1 MONEY STREET",
      "city": "NEW YORK",
      "postalCode": "1001",
      "country": "US",
      "swiftCode": "CRYPTO99",
      "routingNumber": "999999999",
      "accountNumber": "123815146304",
      "currency": "USD"
    }
  }
}

4. Deposit to your account

Wire deposits can only be initiated from your respective bank account so this part of the deposit process will take place outside of Circle’s API.

Using the wire deposit details in the previous step, you will send funds from your bank account to your Circle Mint Account.

You must confirm the wire details are correct to avoid any delays or bank returns.

5. Ready for the next step?

After experimenting with our APIs, you’ll want to start building test integrations in sandbox prior to moving into production. Start by applying for a Circle Mint account. We'll be happy to walk you through the next steps.