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
}
}Filter
All fields are optional and combine with AND. See Filters for the shared rules.
| Field | Type | Matches |
|---|---|---|
network | String | mainnet, testnet or devnet |
sender | String | Sending party ID or its ANS name |
receiver | String | Receiving party ID or its ANS name |
tokenId | String | Token ID: cc for Canton Coin, or the ID of a CIP-56 token such as cETH |
provider | String | Provider 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
| Field | Type | Meaning |
|---|---|---|
network | String! | Network the transfer belongs to |
recordTime | String! | Ledger record time, ISO 8601 UTC |
sender | String! | Sending party ID |
receiver | String! | Receiving party ID |
amount | String! | Amount as a decimal string, in token units. Keep it as a string or parse with a decimal type, not a float |
tokenId | String! | cc for Canton Coin, otherwise the CIP-56 token ID |
provider | String! | 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
}
}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.