Digital Asset-Backed Borrowing is not available in New York.
The wallet
As a Mint customer entity, you get one modular smart contract account (MSCA) per supported blockchain: Arc and Ethereum, powered by Circle Wallets. Each MSCA holds your cirBTC collateral for the duration of loans on that blockchain. The MSCA has two owners with a signature threshold of one:- Circle-managed ECDSA co-signer: an ECDSA key that Circle holds through its multiparty computation (MPC) custody. This is the active signer for every UserOperation your wallet executes. Circle uses this key to build, sign, and submit onchain transactions on your behalf.
- Your passkey: a WebAuthn P-256 credential you register during wallet creation. This owner is dormant. Circle never uses it to sign routine operations. It exists as an independent recovery owner that Circle cannot exercise on your behalf.
POST /v1/borrow/wallets/owners.
See How-to: Add another wallet owner.
The lending market
Borrows are executed onchain in pre-approved lending markets curated by Circle:- Morpho on Arc and Ethereum
GET /v1/borrow/markets
for live rates and LTV parameters.
The asynchronous job model
Every write endpoint is asynchronous. When you callPOST /v1/borrow/loans
to borrow,
POST /v1/borrow/loans/{id}/repayments
to repay, or any other write, Circle responds with a job rather than the loan or
repayment directly. The job tracks the asynchronous operation Circle executes on
your behalf.
Your integration code polls the job to observe progress. The job progresses
through a series of states until it reaches a terminal state that tells you
whether the operation succeeded or failed. All asynchronous writes share the
same state machine, so once you understand the job lifecycle for one operation,
you understand it for all of them.
Job types
ThejobType field on a job tells you which operation the job represents.
Job states
Thestatus field on a job progresses through the states below.
Job workflow
This diagram shows how a job can move between states.Polling a job
CallGET /v1/borrow/jobs/{id}
to fetch the current state of a job. Poll until status reaches a terminal
state (completed, failed, or approval_rejected).
To list all jobs for your entity, call
GET /v1/borrow/jobs.
Filter by status or jobType to narrow the results.
Loan states
A loan represents one borrow position against one lending market. Thestatus
field on a loan reflects its current state.
LTV, health factor, and liquidation
A borrow position’s safety is measured by two ratios that Circle monitors continuously against onchain state. Loan-to-value ratio (LTV) is the ratio of your outstanding debt to the current value of your collateral, denominated in the borrowed asset. If you borrow 3,000 USDC against cirBTC worth 10,000 USDC (per the market oracle), your LTV is0.30. LTV rises as your debt accrues interest, as the oracle price of cirBTC
falls, or both.
Health factor is the inverse safety measure. It equals LLTV / LTV, where
LLTV is the lending market’s liquidation threshold. A health factor of 1.0
means the position is at the liquidation boundary. Above 1.0, the position is
safe. Below 1.0, a third-party liquidator can repay part of the debt and seize
collateral to bring the position back in line.
The Morpho market’s LLTV is the protocol’s liquidation threshold. Circle
enforces a stricter maxOriginationLtv at borrow creation. This is the highest
LTV Circle allows for new borrows, set below LLTV to leave a safety buffer
against short-term oracle price movement. Both values are returned on each
market in
GET /v1/borrow/markets.
Margin call notifications
Circle monitors your position’s health factor and sends the account administrator an email when your LTV reaches 90% of the market’sLLTV. Respond
by:
- Adding collateral to the loan to lower your LTV
- Repaying part of the debt to reduce the outstanding balance
Liquidations and residual sweeps
Liquidations happen onchain and are executed by third-party liquidators (usually MEV bots watching the market). Circle detects the liquidation by polling the onchain position and updates the loan’s status toliquidated.
A full liquidation may leave residual cirBTC in the MSCA if the liquidator only
needed part of the collateral to cover the debt. Circle detects the residual and
automatically creates a withdraw_residual job to sweep it back to your Mint
balance. You do not need to trigger the sweep yourself in the normal flow. The
POST /v1/borrow/loans/{id}/residual-sweep
endpoint exists as a manual retry for the rare case where the automatic sweep
job fails.
The OnchainLoan schema exposes liquidation-related fields for reference:
liquidationDetectedAt: when Circle first detected the liquidation onchain.liquidatedDebtAmount: amount of debt the liquidator repaid.liquidatedCollateralSeized: amount of cirBTC the liquidator seized.liquidationOraclePrice: oracle price of cirBTC at liquidation.
Oracle drift
Circle uses the same onchain oracle the lending market uses to price collateral. Oracle prices move continuously, so a position that is safe at one moment can move closer to (or past) the liquidation boundary as the oracle updates. This is whymaxOriginationLtv is stricter than LLTV, and why the margin call fires
well before 1.00.
Currency codes and token symbols
Responses use two different string representations for the same asset across different fields, and it’s easy to confuse them.- Circle currency code: uppercase codes like
USDorCIRBTC. Used in theasset,borrowAsset, andcollateralAssetfields to identify an amount’s underlying currency. The currency code is Mint’s canonical identifier for the asset. - Token symbol: mixed-case symbols like
USDCorcirBTC. Used as keys in thedepositAddressesmap on your wallet to identify which token an onchain address expects.
borrowAsset: "USD" on a loan means you borrowed USDC. The
corresponding token symbol USDC appears as a key under
wallet.depositAddresses if you need the onchain address that receives your
borrowed USDC.