createTokenStandardTransfer persists asynchronous token-standard workflow rows distinct from legacy createTransferOffer Amulet offers—use when integrating splice transfer pipelines keyed off decimal-string amounts plus explicit expiry timestamps.
Setup
import { Canton } from '@fairmint/canton-node-sdk';
const canton = new Canton({
network: 'devnet',
provider: '5n',
partyId: 'OWN_PARTY_ID',
});
Import and receiver
import { Canton } from '@fairmint/canton-node-sdk';
Receiver: canton.validator.createTokenStandardTransfer.
Minimal example
const tx = await canton.validator.createTokenStandardTransfer({
receiver_party_id: 'Alice::1220...',
amount: '100',
description: 'Invoice #42',
expires_at: Date.now() + 3_600_000,
tracking_id: `tst-${crypto.randomUUID()}`,
});
Parameters
receiver_party_id(required, string) — Destination Canton party.amount(required, string) — Decimal quantity expressed textually for precision safety.description(required, string) — Memo surfaced downstream explorers when permitted.expires_at(required, number) — Absolute expiry timestamp (milliseconds epoch convention aligned wallet OpenAPI definitions).tracking_id(required, string) — Unique trace identifier correlatinglistTokenStandardTransfers.
Returns
Wallet JSON acknowledgement summarizing acceptance—inspect bundled wallet-internal schema describing correlation identifiers plus ledger hooks release-by-release.
Errors and pitfalls
- Low balances fail validation server-side—preflight
getWalletBalance. - Duplicate
tracking_idcollisions behave undefined—derive UUID-grade uniqueness client-side.
Auth and party
Bearer token binding signer wallet identity exercising Canton authority constraints.
See also
Source
src/clients/validator-api/operations/v0/wallet/token-standard/transfers/create.ts on GitHub.