Create Digital Asset Exchange
Use this API to create a Digital Asset Exchange. This API will respond with a Transaction ID, use this Transaction ID in the GET Transaction endpoint to get the crypto quote (e.g. rate and amounts). No funds move until the order is confirmed.
Supported assets in sandbox
In sandbox, Digital Asset Exchange supports USDC and USDT on Ethereum, traded against USD.
| Digital asset | base_asset | quote_asset | symbol | Minor unit decimals |
|---|---|---|---|---|
| USD Coin | ETHEREUM-USDC | USD | USDC-USD | 6 |
| Tether | ETHEREUM-USDT | USD | USDT-USD | 6 |
We recommend testing with USDT. Our sandbox holds a limited supply of USDC, so USDC orders are more likely to fail for lack of available balance.
Sandbox network and token contracts
Sandbox runs against the Ethereum Sepolia testnet. The wallet addresses and
transaction_hash values returned by the API are Sepolia addresses and hashes, and can be
inspected on Sepolia Etherscan.
| Digital asset | Sepolia contract address |
|---|---|
| USDC | 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 |
| USDT | 0xdeB5c83f0eFd5AE456746912A2cCA573BC33d220 |
USDC is Circle's official Sepolia deployment — see USDC contract addresses. Tether does not publish a Sepolia deployment, so sandbox USDT uses a Pave-deployed test contract with the same ERC-20 interface and 6 decimals.
These contracts and addresses are testnet-only and carry no value. Do not send mainnet funds to a sandbox wallet address.
Digital Asset Exchange Flow
A Digital Asset Exchange follows a two-step quote/confirm pattern:
- Create order (POST
/v1/crypto/order) — returns a live, time-boxed quote (rate and amounts). No funds move. - Review quote (GET
/v1/transactions/:transactionID) — retrieve the order to review the quote before confirming. - Confirm order (PUT
/v1/crypto/order) — confirms the quote and triggers execution and settlement.
The quote expires automatically if it is not confirmed before quote_valid_until.
Example POST to create a Digital Asset Exchange (quote)
This API will respond with a transaction_id
Use this transaction_id in the GET Transaction endpoint to get the Digital Asset Exchange. This is a quote and not an executed trade. If you would like to execute the trade, use the Digital Asset Exchange PUT API before the quote expires.
It might take several seconds for the Transaction to be able to be retrieved by this API. If you get a 404 error, please try again in 5-15 seconds.
The quote will automatically expire if the order is not confirmed before quote_valid_until.
Authorization
AuthorizationRequiredBearer <token>Enter your token in the format: Bearer {token}
In: header
Request Body
application/jsonOptionalsideRequiredstringTrade direction from the customer perspective: "buy" or "sell".
"buy" | "sell"priorityRequiredstringSupported values are "instant" only. Drives how quickly settlement is dispatched.
"instant"railRequiredstringThe rail the trade flows through: "rfq".
"rfq"symbolRequiredstringThe trading pair symbol, e.g. "USDT-USD".
base_assetRequiredstringThe currency in which the amount is made (e.g. USD, EUR, SGD)
quote_assetRequiredstringThe currency in which the amount is made (e.g. USD, EUR, SGD)
requested_assetRequiredstringThe currency in which the amount is made (e.g. USD, EUR, SGD)
requested_amountRequiredstringThe amount of money. Our API expect amount values to be in minor units - the smallest unit of a currency depending on the number of decimals. For example, USD has two decimals. So $10 is represented by 1000. JPY has no decimals, so ¥10 is 10.
customer_pays_account_idRequiredstringAccount the customer pays from. Must be owned by your legal entity.
customer_receives_account_idRequiredstringAccount the proceeds are delivered to. Must be owned by your legal entity.
descriptionstringadditional_detailsstringHeader Parameters
Idempotency-KeyRequiredstringResponse Body
Success response
transaction_idRequiredstringGet Balance Summary GET
Retrieves the balance summary for the given account ID, can be filtered by date.
Confirm Digital Asset Exchange PUT
Use this API to confirm and execute a Digital Asset Exchange quote that was created with the POST Create Digital Asset Exchange endpoint. The quote must be confirmed before it expires.