Instant Settlement Is a Funding Decision

Maciej Lewandowski · · Engineering notes

In the previous note Alice bought 100 bonds from Bob for €100k on Canton, and the question was who gets to see the trade. This note asks when the trade settles, and what it costs to make that moment the same as the trade itself.

The two days between trade and settlement

Most European markets moved to T+2 in October 2014. Alice and Bob agree on Monday, and the bonds and the cash move on Wednesday.

Settlement itself is already delivery versus payment. The central securities depository moves the bonds only against the cash, so neither side can lose the full value of the trade. The risk sits in the two days before it. If Bob defaults on Tuesday, the trade never settles, and Alice has to buy the bonds again at Tuesday's price. If the price has risen, she loses the difference. That is replacement cost. For a cleared trade, the clearing house collects margin to cover it.

The window is getting shorter. The US moved to T+1 in May 2024. The EU, the UK and Switzerland move together on 11 October 2027.

On Canton the trade can be the settlement

The Settle choice from the previous note moves the cash and the bonds in one Daml transaction. The mediator declares one result for every participant, so the two legs commit together or not at all. If Alice exercises Settle as soon as the DvP is signed, there is no window at all. Nothing is owed overnight, and there is no replacement cost for anyone to margin.

Mon Tue Wed T+2 Europe today open exposure, 2 days cash and bonds due Wednesday, after netting T+1 from 11 Oct 2027 1 day due Tuesday, after netting Atomic on Canton trade and settlement are one transaction cash and bonds due at the moment of the trade, gross

What the window was paying for

The two days are more than a delay. Two things happen inside them.

Netting. Trades that clear through a central counterparty are netted before they settle. A member that bought and sold the same bond many times during the day delivers or receives one net quantity against one net payment. Settling each trade atomically gives that up. Every trade has to be funded in full when it happens.

Time to fund. Under T+2 Alice can agree the trade first and raise the cash by Wednesday. She can sell something else, draw on a credit line or borrow in the repo market. When the trade is the settlement, the €100k has to sit in her cash holding at the moment she exercises Settle. If it is not there, the transaction is rejected, and the bond leg goes down with it.

A small example shows the size of the difference. Alice trades the same bond with Bob four times in one day, at €1,000 per bond.

Alice's trades bonds cash cash position 1 buys 100 bonds +100 −€100k −€100k 2 sells 60 bonds −60 +€60k −€40k 3 buys 30 bonds +30 −€30k −€70k 4 sells 50 bonds −50 +€50k −€20k net, end of day +20 −€20k Deferred net: one delivery of 20 bonds against €20k. Atomic gross: four deliveries, €240k moved, €100k needed before the first trade.

Settled net at the end of the day, Alice pays €20k and receives 20 bonds. Settled atomically trade by trade, €240k moves, and she needs €100k in her cash holding before the first trade. The counterparty risk is gone, and in its place is a funding requirement five times the net payment.

Atomic and instant are two separate decisions

Canton makes the settlement atomic. When it happens is up to the contract. A DvP can settle at the end of the day or on T+1. A netting contract can collect the day's obligations and settle only the net amounts, still in one atomic transaction.

In Daml the settlement deadline is a field of the contract, and the choice checks it against ledger time:

template DvP
  with
    buyer : Party
    seller : Party
    cashCid : ContractId CashHolding
    bondCid : ContractId BondHolding
    settleBy : Time
  where
    signatory buyer, seller

    choice Settle : (ContractId CashHolding, ContractId BondHolding)
      controller buyer
      do
        now <- getTime
        assertMsg "settlement window closed" (now <= settleBy)
        cash <- exercise cashCid Transfer with newOwner = seller
        bond <- exercise bondCid Transfer with newOwner = buyer
        return (cash, bond)

    choice Expire : ()
      controller seller
      do
        now <- getTime
        assertMsg "settlement window still open" (now > settleBy)

Settle refuses to run after the deadline. Expire lets Bob archive the instruction once the deadline has passed, so a failed trade does not stay open on the ledger. Like the model in the previous note, this is a toy. In a deferred design each side first allocates its asset to the settlement, which is the multi-leg case that CIP-56 allocations cover. The point here is narrower. On Canton the settlement cycle is a line in the contract, so someone has to choose it.

Where zero days fits

Instant settlement suits markets where the funding is the product and the time is short. Repo is the clearest case. An intraday repo lends cash against collateral for a few hours, and a settlement cycle measured in days cannot express it.

Broadridge's Distributed Ledger Repo platform is built in Daml and runs on Canton. In June 2026 it processed about $7.5 trillion of repo, an average of $357 billion a day. In Broadridge's own description, the collateral is locked and tokenized, ownership moves through smart contracts, and settlement triggers a payment on conventional payment rails rather than cash on the ledger. So at that volume the cash leg still sits outside the ledger, which shows where the hard part of atomic DvP is.

Before you settle in zero days

  1. Name the money for the cash leg: tokenized deposits, a stablecoin, or a payment on existing rails triggered by the ledger. If the payment runs outside the ledger, the atomic part covers the ownership record, not the money.
  2. Decide where the cash comes from at the moment of the trade. Prefunded holdings, an intraday credit line, or a repo leg in the same transaction.
  3. Decide what replaces netting. Gross atomic settlement per trade, or a netting contract that settles the net amounts atomically at a fixed time.
  4. Write down what a failed settlement looks like. A rejected transaction moves nothing, so the trade stays open. Give it a deadline and an expiry path.
  5. Check the operating hours of the cash leg. A ledger that settles at 2 a.m. on Sunday needs cash that can move at 2 a.m. on Sunday.
  6. Keep the privacy design from the previous note. Whoever runs the netting contract sees every trade it nets, so its signatories and observers are a disclosure decision too.