Blockstream Enterprise Custody SDK
Investor & Venue Guide

Asset receipt

Receiving AMP2-managed assets does not require a transaction-building step. The page explains receipt flow, transfer detection, address derivation, and confirmation states.

Receiving AMP2 managed assets is passive from the investor/venue perspective. The issuer sends assets to your registered wallet, and the tokens appear after on chain confirmation.

How receiving works

  1. The issuer initiates a send operation through the AMP2 SDK, specifying your WID as the recipient.
  2. AMP2 constructs, signs, cosigns, and broadcasts the transaction to the Liquid Network.
  3. The Liquid Network confirms the transaction (~1 minute block time).
  4. Your wallet software detects the new UTXO when scanning the chain via LWK.

No action is required on the investor/venue side to receive assets. The wallet descriptor is sufficient for AMP2 to derive the correct receive address.

Detecting incoming transfers

Use LWK's chain scanning to detect new transactions for your descriptor:

use lwk_wollet::{Wollet, ElectrumClient, ElectrumUrl};

let wollet = Wollet::new(network, &descriptor)?;

let client = ElectrumClient::new(&ElectrumUrl::new("blockstream.info:995", true, true))?;
wollet.full_scan(&client)?;

let balance = wollet.balance()?;
for (asset_id, amount) in &balance {
    println!("Asset: {} Balance: {}", asset_id, amount);
}

Address derivation

Wallet addresses are derived from the descriptor locally using LWK:

use lwk_wollet::Wollet;

let wollet = Wollet::new(network, &descriptor)?;
let address = wollet.address(None)?;
println!("Receive address: {}", address);

Addresses are deterministic — the same descriptor always produces the same address sequence.

Refresh patterns

For balance tracking:

PatternFrequencyUse case
Poll after known sendCheck every 60s after issuer confirms a sendBest UX for expected transfers
Periodic scanEvery 1–5 minutesBackground balance updates
Event drivenWhen user opens the walletOn demand refresh

Liquid blocks are produced approximately every minute. Scanning more frequently than once per minute provides no additional information.

Pending vs. confirmed

After broadcast but before block inclusion:

  • LWK chain scanning shows the transaction after block inclusion.
  • Show "pending" state to users until the transaction appears in a confirmed block.

Liquid transactions are typically confirmed within 1–2 minutes. If a transaction remains unconfirmed for more than 10 minutes, investigate.

Next steps

On this page