Is Allocation the recommended path for concurrent payments, or is TransferCommand still preferred? Is sequential-nonce a known/accepted limitation, or is migration expected?

Implementing x402 on Canton via Splice.ExternalPartyAmuletRules.TransferCommand (client→facilitator-executed CC transfers). TransferCommand_Send aborts without archiving if nonce > nextNonce, locking the payer’s account until the facilitator settles - blocks concurrent payments from the same party.

Ref: ExternalPartyAmuletRules.daml

CC also supports the Allocation API (CIP-56): client exercises AllocationFactory_Allocate → AmuletAllocation backed by LockedAmulet, settlement.executor = facilitator. Facilitator exercises Allocation_ExecuteTransfer to move funds. No nonce anywhere - concurrency is per-holding + allocateBefore/settleBefore deadlines, not a global counter.

Refs:

- AllocationV1.daml

- AllocationInstructionV1.daml

- AmuletAllocation.daml

- cip-0056.md

Context: github discussion

The preferred approach is to use the token standard APIs. TransferCommand will be deprecated soon and removed later.

Just a small correction: TransferCommand has been deprecated already as part of splice 0.5.16.