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
CallGET /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:
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. CallPOST /v1/borrow/wallets
with both.
Request:
wallet_setup job:
id for the next substep.
Step 2.2. Poll the job until it completes
CallGET /v1/borrow/jobs/{id}
and poll until status reaches completed.
Request:
Step 2.3. Fetch your new wallet
Once the job completes, callGET /v1/borrow/wallets
to retrieve the MSCA address and the per-asset deposit addresses.
Request:
Step 3. Originate a borrow
CallPOST /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).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 throughsubmitted and confirmed to completed. Poll
GET /v1/borrow/jobs/{id}
until you see the terminal state.
Response (once the job completes):
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: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.