Transfers Stream

transfersCreated pushes every token transfer, CC and CIP-56 tokens, as it is recorded on the ledger.

transfersCreated emits a batch of token transfers recorded on the ledger at the same moment: Canton Coin and any CIP-56 token CC View indexes. Each event carries an array of transfers, and each transfer in it records who sent, who received, how much, which token, and through which venue. An event fires once its transfers are committed, so everything you receive is final.

Use it when you need to react to money moving: credit a deposit the moment it lands, watch an address or an ANS name, track a token's flow, or measure the volume going through a venue in real time.

Subscribe

subscription Transfers {
  transfersCreated(filter: { network: "mainnet" }) {
    recordTime
    sender
    receiver
    amount
    tokenId
    provider
  }
}

Open in GraphiQL ↗

Filter

All fields are optional and combine with AND. See Filters for the shared rules.

FieldTypeMatches
networkStringmainnet, testnet or devnet
senderStringSending party ID or its ANS name
receiverStringReceiving party ID or its ANS name
tokenIdStringToken ID: cc for Canton Coin, or the ID of a CIP-56 token such as cETH
providerStringProvider party ID or app name of the venue the transfer went through

To watch one wallet in both directions, open two subscriptions: one with sender, one with receiver.

Event fields

FieldTypeMeaning
networkString!Network the transfer belongs to
recordTimeString!Ledger record time, ISO 8601 UTC
senderString!Sending party ID
receiverString!Receiving party ID
amountString!Amount as a decimal string, in token units. Keep it as a string or parse with a decimal type, not a float
tokenIdString!cc for Canton Coin, otherwise the CIP-56 token ID
providerString!Provider party ID of the venue (featured app) the transfer went through

Example message

One next message with two transfers in the batch. Values are illustrative.

{
  "data": {
    "transfersCreated": [
      {
        "recordTime": "2026-09-30T14:03:11.482913130Z",
        "sender": "alice::1220a3f0c2…",
        "receiver": "bob::1220c81d9e…",
        "amount": "125.0000000000",
        "tokenId": "cc",
        "provider": "wallet-app::12204b77e1…"
      },
      {
        "recordTime": "2026-09-30T14:03:11.482913130Z",
        "sender": "market-maker::1220f00d3a…",
        "receiver": "exchange-hot::12209c2e55…",
        "amount": "0.2500000000",
        "tokenId": "cETH",
        "provider": "dex-venue::1220e4a1b0…"
      }
    ]
  }
}

Example: detect deposits to a treasury address

Filter on the receiving party and the token. Every event is a confirmed deposit. Credit it, then store recordTime so you can backfill from List token transfers if the connection drops.

subscription Deposits {
  transfersCreated(
    filter: { network: "mainnet", receiver: "treasury::1220e9c4…", tokenId: "cc" }
  ) {
    recordTime
    sender
    amount
    provider
  }
}

Open in GraphiQL ↗

Related REST endpoints

List token transfers for history and backfill. Get transfer details for the full record of a single transfer. Get transfer statistics for aggregates.