---
title: "Poll a transfer to completion"
method: GET
path: "/value-transfer/status/{quoteId}"
tags: ["value-transfer"]
---

# Poll a transfer to completion

`GET /value-transfer/status/{quoteId}`

Upstream events collapsed into the three stages the Progress screen renders, plus `terminal` and `pollAfterMs` so the client neither interprets event names nor owns the cadence. Re-poll after `pollAfterMs` until `terminal` is true. `txHash` speeds up the lookup. Only call this for a quote with `trackable: true` — a same-chain send has no upstream record.

## Path parameters

- `quoteId` string, required

## Query parameters

- `txHash` string, required

## Response `200`

Current transfer status

- TransferStatusDto
  - `status` 'PENDING' | 'PROCESSING' | 'SUCCEEDED' | 'FAILED' | 'UNKNOWN', required
  - `stage` 'sent' | 'bridging' | 'delivered', required — Furthest stage reached. Derived from upstream events server-side so a new event name never needs a client release.
  - `terminal` boolean, required — True once the transfer has settled either way. Stop polling when set.
  - `pollAfterMs` object, nullable, required — How long to wait before polling again, in ms. Null once terminal. Server-owned so the cadence can be tuned without a client release.
  - `explorerUrl` string — LayerZero Scan link for the transfer — the per-leg tx detail, so the client does not need a timeline of its own.

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.dev/dre/apis/dre-api.md) · [All operations](https://skmtc.dev/dre/apis/dre-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/dre/dre-api/revisions/5d14beb9482b/schema)
