Pave Bank
Crypto

Confirm Digital Asset Exchange

Admin Access Required

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.

Availability: This API is currently available in sandbox and is targeted for production on 10 August 2026. Reach out to us to have it enabled for your account.

Example PUT to confirm a Digital Asset Exchange

curl -X PUT 'https://developer-api-staging.pavebank.dev/v1/crypto/order' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <YOUR_IDEMPOTENCY_KEY>' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  --data '{
  "transaction_id": "transaction_tvc28vj7eul6gtymqcl9nm6xhl"
}'

Confirming locks in the quoted rate and triggers execution and settlement. You must confirm before the order's quote_valid_until timestamp; if the quote has expired, the confirmation is rejected and you must create a new order to obtain a fresh quote.

This API will respond with a transaction_id. Use this transaction_id to query the Digital Asset Exchange via the GET Transaction API.

{
  "transaction_id": "transaction_tvc28vj7eul6gtymqcl9nm6xhl"
}

Example response from GET Transaction API

This is an example of a completed Digital Asset Exchange. If you query the order immediately after invoking the PUT API, you may receive a response reflecting an intermediate state (e.g., in_progress) before the order reaches its final status.

{
  "transaction_id": "transaction_tvc28vj7eul6gtymqcl9nm6xhl",
  "status": "completed",
  "timestamp": "2026-07-13T07:19:31.969776Z",
  "type": "CRYPTO-TRADE-V2",
  "customer_type": "Exchange (Digital asset)",
  "crypto_trade_v2": {
    "transaction_id": "transaction_tvc28vj7eul6gtymqcl9nm6xhl",
    "customer_legal_entity_id": "legalentity_<LEGAL_ENTITY_ID>",
    "initiated_by": {
      "id": "user_<YOUR_USER_ID>",
      "first_name": "Local",
      "last_name": ""
    },
    "checked_by": null,
    "checked_at": null,
    "priority": "instant",
    "side": "sell",
    "rail": "rfq",
    "symbol": "USDT-USD",
    "base_asset": "ETHEREUM-USDT",
    "quote_asset": "USD",
    "customer_pays_account_id": "account_<Example_USDT_Account>",
    "customer_pays_account_name": "ETH USDT Account",
    "customer_pays_account_iban": "",
    "customer_pays_account_wallet_address": "0x54138299990c0F2F44DD58808b69EcFfCfdba508",
    "customer_receives_account_id": "account_<Example_USD_Account>",
    "customer_receives_account_name": "USD Account",
    "customer_receives_account_iban": "<RECEIVES_ACCOUNT_IBAN>",
    "customer_receives_account_wallet_address": "",
    "customer_requested_asset": "ETHEREUM-USDT",
    "customer_requested_amount": "100000000",
    "customer_pays_asset": "ETHEREUM-USDT",     // What the customer paid
    "customer_pays_amount": "100000000",
    "customer_receives_asset": "USD",           // What the customer received
    "customer_receives_amount": "9957",
    "customer_rate": "0.9957155299663593",      // Locked-in rate, expressed as Base/Quote
    "quote_valid_until": "2026-07-13T07:24:31.928134Z",
    "quote_confirmed_at": "2026-07-13T07:19:43.325326Z", // Set once the order is confirmed
    "description": "Sell 100 USDT",
    "additional_details": "",
    "document_ids": [],
    "transaction_hash": "0x450a99bacb2ed95778515f9b9eb95596a89569c1b265badcb4b232a74e63d338",
    "customer_pays_network_fee_asset": "ETHEREUM-ETH",  // On-chain network fee charged to the customer
    "customer_pays_network_fee_amount": "172035606380292",
    "customer_pays_network_fee_account_id": "",
    "created_at": "2026-07-13T07:19:31.928134Z",
    "updated_at": "2026-07-13T07:34:26.378932Z"
  }
}
PUT
/v1/crypto/order

Authorization

AuthorizationRequiredBearer <token>

Enter your token in the format: Bearer {token}

In: header

Request Body

application/jsonOptional
transaction_idRequiredstring

The transaction_id returned by the Create Digital Asset Exchange endpoint.

Header Parameters

Idempotency-KeyRequiredstring

Response Body

Success response

transaction_idRequiredstring
curl -X PUT "https://developer-api-staging.pavebank.dev/v1/crypto/order" \
  -H "Idempotency-Key: string" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "transaction_id": "string"
  }'
{
  "transaction_id": "string"
}