Skip to main content
POST
/
api
/
rfq
/
confirm-escrow-deposit
Confirm escrow deposit
curl --request POST \
  --url https://api.example.com/api/rfq/confirm-escrow-deposit \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "quoteId": "<string>",
  "txHash": "<string>"
}
'
{ "success": true }
Manual deposit-confirmation fallback when on-chain auto-detect misses your transfer. Idempotent on duplicate (quoteId, txHash).
Scope payouts:write · rate-limited

Headers

Authorization
string
required
API key.
Idempotency-Key
string
Optional.

Request body

quoteId
string
required
UUID of the original quote. Must be in awaiting_escrow_deposit.
txHash
string
required
0x-prefixed transaction hash. Teel verifies the on-chain amount, address, and chain match.

Response

success
boolean
Always true on success. No other fields — fetch detail via GET /rfq/status/{quoteId}.
{ "success": true }

Errors

StatusWhen
400Request body malformed (missing quoteId / txHash, or non-JSON body). Returns {"success": false, "error": "invalid request"}.
401Missing or invalid key.
500Confirmation failed. Returns {"success": false, "error": "escrow deposit confirmation failed"}. Every persistent failure mode the handler can hit collapses here today — wrong txHash, amount mismatch, chain mismatch, quote not in the expected state, on-chain tx not yet confirmed. There is no granular error-shape distinction. Don’t blind-retry a 500 from this endpoint — verify your tx hash, amount, and chain first.

When not to call this

Don’t call in the first few minutes — auto-detect is actively watching. Only fall back here if the quote status hasn’t moved minutes after your tx confirmed on-chain.