Stellar's Claimable Balance is one of the most powerful — and underappreciated — primitives in the blockchain ecosystem. For protocol operators distributing tokens to large numbers of users, it solves a critical problem: how do you distribute assets non-custodially, efficiently, and verifiably?

What Is a Claimable Balance?

A Claimable Balance is an on-chain object on the Stellar network that holds assets in escrow until one or more specified accounts claim them. The key distinction from a simple transfer: the recipient does not need to be online or watching the network when the balance is created. They can claim it at any time.

  • Created by a protocol or distributor account
  • Locked to one or more eligible wallet addresses (claimants)
  • Can include time-based conditions (claim before/after a certain date)
  • Claimed by the recipient signing a ClaimClaimableBalance transaction
  • Non-custodial: once created, the distributor cannot claw back the balance without a defined revocation condition

Why XamanProtocol Uses Claimable Balances

For ecosystem airdrops, Claimable Balances provide several advantages over traditional transfer methods:

  • Trustless: Once created, the balance is locked and verifiable on-chain
  • Non-custodial for recipients: Users claim directly to their own wallet — XamanProtocol never holds the airdrop assets
  • Verifiable: Anyone can check the Stellar ledger to confirm a Claimable Balance exists for a given address
  • Controlled distribution: Conditions can enforce claim windows or eligibility periods
  • Gas efficient: Batch creation is possible from a single distributor account

The Claiming Process

Claiming a Claimable Balance on Stellar is a straightforward on-chain action:

  • XamanProtocol creates the Claimable Balance on-chain with your Stellar address as the claimant
  • You see the pending airdrop in your XamanProtocol dashboard
  • You click 'Claim' — this constructs a ClaimClaimableBalance transaction
  • You sign the transaction with your Stellar wallet (locally on your device)
  • The transaction broadcasts to the Stellar network
  • Upon confirmation (~5 seconds), the assets appear in your Stellar account
Stellar SDK — Claim Transaction
const claimOp = Operation.claimClaimableBalance({
  balanceId: claimableBalanceId,
});

const tx = new TransactionBuilder(sourceAccount, {
  fee: BASE_FEE,
  networkPassphrase: Networks.PUBLIC,
})
  .addOperation(claimOp)
  .setTimeout(30)
  .build();

// Transaction signed locally on user's device
tx.sign(userKeypair);
await server.submitTransaction(tx);

Trustline Requirements

To receive certain Stellar assets (non-XLM tokens), your Stellar account must have an established trustline with the asset issuer. XamanProtocol displays trustline requirements before airdrop campaigns and provides guidance on establishing them. This is a one-time setup per asset.

Claimable Balances require a small XLM reserve on the Stellar network. Ensure your Stellar account has sufficient XLM to meet the minimum reserve requirements before attempting to claim.