> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teel.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Confirm escrow deposit

> Manual fallback when auto-detection misses your on-chain deposit.

Manual deposit-confirmation fallback when on-chain auto-detect misses your transfer. Idempotent on duplicate `(quoteId, txHash)`.

<Info>**Scope** `payouts:write` · rate-limited</Info>

## Headers

<ParamField header="Authorization" type="string" required>
  API key.
</ParamField>

<ParamField header="Idempotency-Key" type="string">Optional.</ParamField>

## Request body

<ParamField body="quoteId" type="string" required>UUID of the original quote. Must be in `awaiting_escrow_deposit`.</ParamField>
<ParamField body="txHash" type="string" required>`0x`-prefixed transaction hash. Teel verifies the on-chain amount, address, and chain match.</ParamField>

## Response

<ResponseField name="success" type="boolean">Always `true` on success. No other fields — fetch detail via [`GET /rfq/status/{quoteId}`](/api-reference/payouts/status).</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  { "success": true }
  ```
</ResponseExample>

## Errors

| Status | When                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | Request body malformed (missing `quoteId` / `txHash`, or non-JSON body). Returns `{"success": false, "error": "invalid request"}`.                                                                                                                                                                                                                                                                                                           |
| `401`  | Missing or invalid key.                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `500`  | Confirmation 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.
