trustlinedocs
Mechanisms

C — Claimable balance

DefaultCAP-23CAP-33

The always-works path for “send now, activate later.” The asset is sent as a claimable balance and waits on-ledger until the recipient signs once. No protocol change — this works on mainnet today.

Sender side

The exchange or distributor creates a claimable balance to the recipient in one transaction. The predicate is unconditional by default, or time-bound with a reclaim window. Record the resulting balance id.

send.ts
const { balanceId } = await onboarder.buildSend({
  asset: { code: "EURCV", issuer: "GBAD…7QFD" },
  amount: "100.00",
  claimant: recipient,           // destination account
  // predicate: { unconditional: true } by default
});

Recipient side — unregulated asset

The recipient claims the balance in a single transaction co-signed by the sponsor. The sponsored-reserve sandwich means the recipient needs no XLM.

beginSponsoringFutureReserves({ sponsoredId: recipient })   (source: sponsor)
changeTrust({ asset })                                      (source: recipient)
endSponsoringFutureReserves()                               (source: recipient)
claimClaimableBalance({ balanceId })                        (source: recipient)

Recipient side — regulated asset

A claim requires an authorized trustline, so the regulated variant adds one issuer operation, signed by the approval server after its compliance check.

beginSponsoringFutureReserves({ sponsoredId: recipient })   (source: sponsor)
changeTrust({ asset })                                      (source: recipient)
endSponsoringFutureReserves()                               (source: recipient)
setTrustLineFlags({ trustor: recipient, asset,
                    setFlags: AUTHORIZED_FLAG })            (source: issuer)
claimClaimableBalance({ balanceId })                        (source: recipient)
The recipient and sponsor co-sign their operations; the issuer authorization is inserted and signed by the approval server. This is where mechanism C composes with the approval server for regulated assets.

When to use it

Use C whenever the sender can push the asset before the recipient is ready — withdrawals from an exchange, payouts, airdrops. It is the default because it never blocks on the recipient’s state.

Previous
Your first onboarding
Next
A — Authorize trustline