Skip to main content
A minted credential proves control of a wallet. It does not give that wallet an exchange account, and it does not give the exchange permission to draw its collateral. Three conditions must hold before an order can fill. They are independent, and each fails in a distinct way: The second is the easiest to miss, because nothing rejects until settlement.
A wallet whose key was exported from the Noise app is already registered and already approved, and it holds whatever balance the app account holds. Call GET /account/balance and confirm registered is true, then continue at Orders. An app account with no capital still needs funding: check marginFree, treating null as unreported rather than zero.

Register

POST /account/register creates the exchange-side account for the calling wallet, which is identified by the credential rather than by a request body.
It takes no request body, so sign the empty string as the body component. The response is { "status": "pending" } or { "status": "registered" }. Registration is asynchronous, so the first call returns pending because the exchange has not applied the record yet. It is also idempotent: an already-registered wallet returns registered and nothing is written. Poll GET /account/balance and wait for registered to be true:

Approve collateral

GET /account/approval returns an unsigned transaction granting the clearing house an allowance to move the collateral token. The wallet broadcasts it.
Send the returned data bytes verbatim. Do not re-encode the call from its arguments: the bytes carry an ERC-8021 builder attribution suffix, which is lost on reconstruction.
Noise neither signs nor submits this transaction, and it is the only step that spends gas from the wallet. The resulting allowance is a plain on-chain read, so query it directly against the collateral token. The API cannot report whether an allowance exists.

Fund

Send USDC on Base to the wallet address. Use the exchange.collateralTokenAddress from GET /status as the token, because it is not always canonical Circle USDC. Do not assume the well-known address. Size new orders against marginFree rather than availCash. availCash is the balance free to draw on and totalEquity includes open position value; marginFree is the amount actually available to commit to a new order. The two can differ by capital the exchange has already allocated to an open market, which is not currently published separately.

Verify

Once both are correct, place a small limit order well away from the market price and confirm it appears on GET /account/orders before running a strategy.