Skip to main content
To borrow USDC against cirBTC, you provision a wallet, discover a lending market, and originate a borrow. For the underlying concepts, see How Digital Asset-Backed Borrowing works.

Prerequisites

Before you begin, ensure that you’ve:
  • Contacted Circle to enable Digital Asset-Backed Borrowing on your Circle Mint account.
  • Set up your Mint account.
  • Funded your Mint balance with sufficient cirBTC to serve as collateral for the borrow amount you plan to request.
  • Registered a WebAuthn passkey on the device that will act as the recovery owner of your wallet.

Step 1. Discover available markets

Call GET /v1/borrow/markets to list the lending markets Circle has approved for your entity. Each market entry describes the collateral asset, the borrow asset, current rates, and the LTV caps you must respect when originating a borrow. Request:
Response:
Save the marketId from the response. You pass it to the borrow endpoint in Step 3. Before proceeding, confirm that isActive is true and estimate the LTV of your planned borrow using oraclePrice. Keep the ratio below maxOriginationLtv or Circle rejects the origination.

Step 2. Provision your wallet

Circle mints an ECDSA co-signer key, configures a two-owner MSCA on Arc (Circle’s co-signer plus your passkey), and deploys the account onchain. This step is asynchronous.

Step 2.1. Submit the wallet creation request

From your registered passkey, capture the P-256 public key and the WebAuthn credential identifier as hex strings. Call POST /v1/borrow/wallets with both. Request:
The endpoint returns a wallet_setup job:
Save the job id for the next substep.

Step 2.2. Poll the job until it completes

Call GET /v1/borrow/jobs/{id} and poll until status reaches completed. Request:
Response (once the job completes):

Step 2.3. Fetch your new wallet

Once the job completes, call GET /v1/borrow/wallets to retrieve the MSCA address and the per-asset deposit addresses. Request:
Response:

Step 3. Originate a borrow

Call POST /v1/borrow/loans with the marketId from Step 1, the amount of cirBTC you want to post as collateral, and the amount of USDC you want to borrow. The example below borrows 3,000 USDC against 0.2 cirBTC (worth 10,000 USDC at the market’s oracle price of 50,000). Request:
Request amounts use raw uint256 base units (decimal-integer string, no fractional part). Response amounts, in later steps, use the asset’s natural unit. In the example above, 20000000 represents 0.2 cirBTC (cirBTC uses 8 decimals), and 3000000000 represents 3,000 USDC (USDC uses 6 decimals).
Response:
Save the job id for the next step.

Step 4. Poll the job to completion

Circle builds, signs, and submits the onchain UserOperation for the borrow. The job progresses through submitted and confirmed to completed. Poll GET /v1/borrow/jobs/{id} until you see the terminal state. Response (once the job completes):
Once status is completed, the job’s loanId identifies your new loan. The borrowed USDC has been credited to your Mint balance.

Step 5. Confirm the loan and USDC receipt

Fetch the loan to inspect the position. Request:
Response:
The loan is active, collateralAmount reflects the cirBTC you posted, debtAmount reflects the USDC you borrowed, and healthFactor is comfortably higher than 1.0. Confirm the borrowed USDC has landed in your Circle Mint balance by calling GET /v1/businessAccount/balances. The available balance should reflect the credited amount.