Skip to content

Deposit Status

Once you have sent assets to a deposit address, use this endpoint to follow the transfer until funds land in your Openfish wallet.

GET https://bridge.openfish.fun/status/{address}

The {address} parameter accepts any of the three deposit address types (EVM, SVM, or BTC) returned by the /deposit or /withdraw endpoints. The server resolves the address to its parent wallet and returns every matching transaction.

Terminal window
curl https://bridge.openfish.fun/status/0x23566f8b2E82aDfCf01846E54899d110e97AC053
{
"transactions": [
{
"from_chain_id": "1",
"from_token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"from_amount_base_unit": "1000000000",
"to_chain_id": "137",
"to_token_address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
"status": "COMPLETED",
"tx_hash": "0xabc123...",
"created_time_ms": 1697875200000
}
]
}

Every deposit or withdrawal passes through a sequence of states:

StatusTerminalDescription
DEPOSIT_DETECTEDNoFunds detected on the source chain
PROCESSINGNoTransfer is being routed and converted
ORIGIN_TX_CONFIRMEDNoSource chain transaction confirmed
SUBMITTEDNoSubmitted to the destination chain (Polygon)
COMPLETEDYesFunds credited to your wallet
FAILEDYesTransaction encountered an unrecoverable error
FieldTypeDescription
from_chain_idstringSource chain ID
from_token_addressstringToken sent on the source chain
from_amount_base_unitstringAmount sent in base units
to_chain_idstringDestination chain ID (137 for Polygon)
to_token_addressstringToken received on the destination chain
statusstringCurrent transaction status (see table above)
tx_hashstringDestination chain transaction hash (when COMPLETED)
created_time_msnumberUnix timestamp in milliseconds when processing started

An empty transactions array indicates no deposits have been detected at the specified address:

{
"transactions": []
}

This is expected right after sending — the bridge may need a few blocks to notice the incoming transfer.

use openfish_client_sdk::BridgeClient;
use std::time::Duration;
use tokio::time::sleep;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let bridge = BridgeClient::new("https://bridge.openfish.fun");
let deposit_addr = "0x23566f8b2E82aDfCf01846E54899d110e97AC053";
loop {
let status = bridge.status(deposit_addr).await?;
if status.transactions.is_empty() {
println!("Waiting for deposit detection...");
} else {
for tx in &status.transactions {
println!("[{}] {} from chain {}", tx.status, tx.from_amount_base_unit, tx.from_chain_id);
if tx.status == "COMPLETED" || tx.status == "FAILED" {
println!("Terminal state reached: {}", tx.status);
return Ok(());
}
}
}
sleep(Duration::from_secs(15)).await;
}
}
  • Poll every 10-30 seconds until you see a terminal status (COMPLETED or FAILED).
  • Most deposits finalize within 2-5 minutes, depending on how quickly the source chain confirms.
  • Bitcoin deposits take longer due to the Bitcoin network’s block time (~10 minutes per confirmation).

The status endpoint performs a two-step lookup:

  1. It searches the deposit address registry for any of the three chain-specific addresses (EVM, SVM, BTC) matching the provided address.
  2. If a match is found, it returns transactions across all three address types for that wallet.
  3. If no registry match is found, it performs a direct lookup on the provided address.

This means you can query with any one of your deposit addresses and receive the full transaction history.