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

# Top-up Status

> Poll the state of a top-up

Free, public status of a top-up. The `topupId` comes from the `POST` response. The row never exposes the payment signature.

## Path

<ParamField path="merchant" type="string" required>
  Merchant id. Currently `antseed`. Returns `404` for ids that belong to a
  different merchant.
</ParamField>

<ParamField path="id" type="string" required>
  Top-up id (`topupId` from the create response).
</ParamField>

## States

```
same-chain:  settling ───────────→ settled → depositing → deposited
cross-chain: settling → bridging → settled → depositing → deposited
                                      └→ refunding → refunded
any → failed | needs_review                              terminal
```

Poll until the state is terminal (`deposited`, `refunded`, `failed`, `needs_review`). `bridging` usually resolves in under a minute. The gateway resumes every non-terminal top-up after a restart, so crash recovery never double-credits the buyer. `bridge_expired` or `bridge_timeout` in `error` requires Meridian operations review.

<RequestExample>
  ```bash Request theme={"system"}
  curl "https://antseed.mrdn.finance/v1/antseed/topups/0xf6cd…d723"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"system"}
  {
    "topupId": "0xf6cd…d723",
    "state": "deposited",
    "buyer": "0xYourAddress",
    "payer": "0xYourAddress",
    "network": "optimism",
    "sourceNetwork": "optimism",
    "grossAmount": "5000000",
    "netAmount": "4900000",
    "settlementTx": "0xeb80…e5a8",
    "fillTx": "0xa91c…44fe",
    "depositTx": "0x8186…1234",
    "refundTx": null,
    "error": null,
    "createdAt": 1783656257928,
    "updatedAt": 1783656258080
  }
  ```
</ResponseExample>
