SettleMint
ConceptsIssuing & markets

Trading Venue

In Build

A Trading Venue lets a tenant run its own market for a tokenized asset after issuance. The venue contract never gains custodian power over what trades on it.

One order, from signature to delivery.A trader signs an order with their own key. The units it commits are reserved through the backend the market bound for that token. A DALP token's hold feature keeps them inside the trader's own wallet. A plain ERC-20 goes into the venue's escrow vault against the trader's approval. Only then does the order rest on the book, where the engine matches on price and then on time. With a positive holding period, a fill is reported and priced while both legs stay reserved. Delivery transfers value to the counterparties. The market's holding period ends, and both legs and the fee move through each token's own compliance path. Until that moment an approved bust undoes the trade by releasing the legs, and a delivery a token refuses undoes itself the same way.Trader signs an order with their own keyThe order's units are reserved through the token's own backendDALP TOKEN: HOLD FEATUREThe units stay in the trader'sown wallet, held for this venue.PLAIN ERC-20: ESCROW VAULTThe units sit in the venue's ownvault, against the trader's approval.The order rests, and the engine matches on price, then timeThe fill is reported and priced, and both legs stay reservedDELIVERY: COUNTERPARTIES RECEIVE THE LEGSThe holding period ends, and both legs and the fee move througheach token's own compliance path.Until then, releasing the legs undoes the trade. Nothing is forced back.One order, from signature to delivery.A trader signs an order with their own key. The units it commits are reserved through the backend the market bound for that token. A DALP token's hold feature keeps them inside the trader's own wallet. A plain ERC-20 goes into the venue's escrow vault against the trader's approval. Only then does the order rest on the book, where the engine matches on price and then on time. With a positive holding period, a fill is reported and priced while both legs stay reserved. Delivery transfers value to the counterparties. The market's holding period ends, and both legs and the fee move through each token's own compliance path. Until that moment an approved bust undoes the trade by releasing the legs, and a delivery a token refuses undoes itself the same way.Trader signs an orderwith their own keyThe order's units are reservedthrough the token's ownbackendEITHER: DALP TOKEN,HOLD FEATUREThe units stay in the trader'sown wallet, held for this venue.OR: PLAIN ERC-20, ESCROW VAULTThe units sit in the venue's ownvault, on the trader's approval.The order rests, and the enginematches on price, then timeThe fill is reported and priced,and both legs stay reservedDELIVERY: COUNTERPARTIESRECEIVE THE LEGSThe holding period ends, andboth legs and the fee movethrough each token's own path.Until then, an undo is a release.

One order's whole path: it reserves before it rests, it can match and still not be delivered, and delivery runs through each token's own compliance path before anything is final.

A venue is a tenant's own market: its own members, its own calendar, its own fees, under one on-chain identity, and a tenant runs as many as it needs. A market is one trading line inside a venue, so the same pair listed on two venues is two markets with two prices.

Listing gives the venue contract no custodian power. A DALP leg stays inside the trader's own wallet; a plain ERC-20 leg sits in the venue's escrow vault. The one custodian role a listing grants goes to the organisation's operations signer, which the platform uses only to reverse a delivered trade after an approved bust.

A fill is not delivery. With a positive holding period, both legs stay reserved until delivery; a market with a holding period of zero delivers inside the fill's own transaction, with no window at all.

Why trading needs a venue

Issuance is a single event. A primary offering sells newly created units once, and the register then closes to that offer. What a holder does with the position afterward is a separate question the sale itself never answers.

An institutional buyer prices that gap in before they ever subscribe. An instrument nobody can exit is worth less to hold than one that trades, and that discount lands on the offering itself, not just on the holder stuck with it later. A venue is what turns a single sale into an instrument with an ongoing market.

That places trading downstream of issuance, inside the same asset's working life rather than beside it. Asset Lifecycle names the stage directly: after an instrument is issued and unpaused, it is serviced for as long as it lives, and settling trades sits in that same Service stage next to paying coupons, freezing holdings, and collecting fees. Primary Offering is the contract-governed first sale that life begins from; a venue is what happens to the same asset afterward, for as long as anyone wants to trade it.

Why this venue runs on the platform, not beside it

The alternative to a venue built into the platform is a venue built beside it. That second system lists the same tokens under its own view of who may hold them. It needs its own way to hold units mid-trade too, because a trade in progress has to sit somewhere between the seller and the buyer, and each of those is a seam. A seam is where the exchange's own rules and the issuer's rules can quietly disagree: a trade the venue allows and the token's own compliance would have refused.

This venue carries no such seam, because the venue contract never becomes a second custodian. The same identity check and transfer rule that govern every other movement of a listed token are the same check and rule that govern its delivery here, described in full below. A delivered trade is a normal token transfer, so it lands in that asset's own record the same way every other movement does, next to the coupons, freezes, and fee collection Asset Lifecycle already indexes there.

That single fact is also most of why a financial institution reaches for this rather than a bolt-on exchange. Compliance risk stays with the token: every delivery runs through the token's own rules, and the platform checks those rules against the reversal transfers before it accepts a bust on a delivered trade. And the operator keeps the fee schedule and market-making arrangement it already runs, rather than adopting a third party's.

What a venue is, and what a market is inside it

A venue is a tenant's own market, run on its own terms. It admits whoever it decides to admit, keeps its own calendar and fee defaults, and carries its own on-chain identity to back that up, so who can trade there is answered by that venue's admission policy and nothing else. A tenant runs as many venues as it needs, one for retail members and one for institutional desks, or one per jurisdiction.

A market is one trading line on one venue: a base token, a quote token, and the book, price band, fee schedule, and holding period that make them tradable there. The same pair listed on two venues is two markets, with two order books and two prices, and halting one leaves the other trading. Exactly one market per token is that token's reference market, and only its official close reaches the token's price feed. A market's close is computed by a defined methodology set at the market: the last trade price, or a volume-weighted average over a configured window before the close, or over the whole session when no window is set. A session with no settled trade closes at the price its opening auction set.

One tenant, several venues, several markets, one reference market per token.One tenant runs Venue A and Venue B. Venue A lists BOND/USDC and BOND/EURC. Venue B lists its own BOND/USDC market. BOND/USDC on Venue A is flagged as BOND's reference market, and a separate connection shows only its official close reaching BOND's price feed; the other two markets keep their own closes and are not connected to the feed.One tenant, several venues, several markets, one reference market per token.The same figure as the desktop variant, drawn portrait for phone widths: one tenant over Venue A and Venue B, Venue A's two markets and Venue B's one market stacked below, with BOND/USDC on Venue A flagged as the reference market and its official close alone reaching the price feed.

A venue is the boundary and a market is one line inside it; the same pair on two venues is two markets with two prices, and only the reference market's official close feeds the token's price.

Listing: how a token trades without handing over custody

Listing grants the venue contract no custodian role over a token. Its own code is written so that role cannot exist, whatever an operator might otherwise promise. Every reservation request the venue makes is written to never name which backend it is talking to: it asks the token's bound backend to reserve, release, or deliver, and nothing else, ever. No path in the venue contract reaches a forced transfer, an address freeze, or a recovery, on any listed token.

Listing does give one platform account a custodian role. The organisation's operations signer, the same account that submits settlements, receives the custodian role on the access manager of both the base and the quote token, signed by the listing signer. That role exists for one job: reversing a trade that already delivered, after an approved bust, through custodian forced transfers. The platform uses it nowhere else. The grant is skipped when the operations signer already holds the role, and it never blocks a listing. When it cannot be made, for example on a plain ERC-20 with no access manager or when the listing signer cannot grant roles on the token, the platform logs the step to fix: a token admin grants the custodian role to the operations signer on the token's Permissions page. Until then, a bust on that market cannot reverse that leg after delivery.

Which backend a token gets follows from how it was made. A DALP token is issued through the platform's own factory, the contract that deploys every instrument the platform creates, so it carries a hold feature the venue can call directly. The committed units stay inside the trader's own wallet, unspendable elsewhere while the order works, and they leave the wallet only at delivery. A plain ERC-20 exposes no such interface, because nothing about it was built for this. The venue's escrow vault pulls the units in against the trader's approval instead, and can pay them out only to the trader as a claimable credit or to a counterparty at delivery. A listing is accepted only when each DALP issuer admits the venue as a hold reserver, each plain ERC-20 has the venue's escrow vault bound, the listing signer has the venue operator role, and the organisation's operations signer has the venue submitter role. A failed precondition refuses the listing with the step and account to fix. Listing asks an issuer for the right to reserve on one named venue, and for nothing broader; the issuer sets how long a hold stays effective and can drop the venue at any time.

The one paved path a reservation can take, and the paths that do not exist.A trader's wallet signs an order to the off-chain matching engine, and nothing moves yet. A matched fill goes to the on-chain venue contract, still moving nothing. The contract reserves, releases, and delivers through the token's bound backend, either the hold feature or the escrow vault, and only that backend moves units into the listed token contract, which runs its own checks before the leg and fee reach the counterparty wallet. A separate, blocked path leads from the venue contract toward a forced transfer, an address freeze, or a recovery, and it terminates before reaching the token: that path does not exist in the deployed contract.The one paved path a reservation can take, and the paths that do not exist.The same figure as the desktop variant, drawn portrait for phone widths: trader wallet to the off-chain matching engine, to the on-chain venue contract, branching to the hold feature or escrow vault, both leading to the listed token's own checks, and a separate blocked path toward a forced transfer, freeze, or recovery that terminates before reaching the token.

The venue contract only reserves and delivers through the token's own backend; the path toward a forced transfer, a freeze, or a recovery is drawn only to show that it terminates before ever reaching the token.

Trading: how a resting order becomes a fill

Every order is an EIP-712-signed intent, a typed structured message signed by the trader's own key, so the venue can neither fabricate nor alter an order before it moves a token. An order carries a type and a time in force, independently of each other.

Order typeWhat it does
LimitRests at a stated price until it fills, expires, or is cancelled
MarketMatches immediately at the best available price
Time in forceWhat it does
Good-til-cancelled (GTC)Stays resting until filled or cancelled
Good-til-date (GTD)Carries its own signed expiry, and expires on reaching it
Immediate-or-cancel (IOC)Fills what it can at once and cancels the rest
Fill-or-kill (FOK)Fills its whole quantity at once or is cancelled without trading. It is accepted only in the continuous session, because an auction cannot fill it immediately

A stop is not a fourth order type. It carries a trigger price on a limit or a market order instead, and the venue reserves nothing for it until a settlement-confirmed trade reaches that price.

A resting order can be amended in two ways, and the way decides its place in the queue. Lowering its quantity at the same price is done in place: the order keeps its id, its signature and its position, and the reservation behind the removed quantity is released. A new price or a larger quantity needs a newly signed order, because the maker never signed those terms. The venue closes the original as replaced and enters the new order in the same step, so there is no moment with both or neither on the book. The new order takes its own id, joins the back of the queue at its price, and may trade at once if its price crosses. It inherits the original's reservation, so only the difference is reserved or released. Both kinds of amend are recorded in the order log, so a drop copy can report them as replacements.

An accepted order does not join the book directly. The venue first reserves the committed quantity through the market's bound backend, and the order rests and appears in the book only once that reservation confirms on chain. A reservation that reverts or times out rejects the order before it joins the book, and rejected is terminal: the trader signs a new order rather than expecting the original to retry. Once resting, the book shows the resting quantity at each price level, streamed to readers as a full snapshot followed by diffs, and the engine matches strictly by price and then by the order's time of arrival.

A buy limit order reserves enough of the quote token to pay its limit price plus the higher of the market's maker and taker fees. A fill below the limit price spends less than that. Once the settlement transaction confirms and the fills are recorded, the platform releases each buyer's unspent quote reservation for the filled quantity, so price improvement returns to the trader at the fill. When that release cannot be queued, the settlement still stands, and the platform's hold repair returns the surplus later.

Three separately configured price bands bound how far an order may sit or execute from a reference point.

BandAnchored toBounds
ProtectionAn independent price feed, or the last trade when the market has no feedHow far a market order may execute
StaticThe session's last auction uncross or the day's last tradeHow far an incoming order may rest
DynamicThe moving last-trade priceHow far a resting order may drift

Tightening any of them never disturbs an order already resting inside the old limit. A market itself moves through one lifecycle: pending until every listing precondition completes, then live, with an operator-controlled halt and resume, and a delisting that is permanent from either state.

A halt also suspends the market's scheduled auctions. An opening auction or a collection-window clearing that falls due while the market is halted does not run. The first session step after the operator resumes the market runs it. When a session ends while the market is still halted, it closes without its opening auction. A continuous session with no preopen only changes session state, so it keeps its schedule through a halt.

A market's own status, from creation to an optional permanent delisting.A market is created pending. It goes live once every listing precondition completes. From live, an operator can halt it, and from halted the operator can resume it back to live; those two states cycle under operator control. From either live or halted, an operator can delist the market, and delisting is permanent: there is no path back from it.A market's own status, from creation to an optional permanent delisting.The same figure as the desktop variant, drawn portrait for phone widths: pending, then live once every precondition completes, halt and resume cycling under operator control, and delisting permanent from either live or halted.

A market's own status: pending until every precondition completes, then live, halt and resume under operator control, delisting permanent from either state.

Settlement: a fill is not delivery

A matched trade is reported, priced, and published straight away, and on a market with a positive holding period both legs stay reserved, untouched, for a window after that. The token's own compliance check is the venue's final authority on whether a transfer is legal, and that check only runs at the moment of delivery: the holding period is what waits for it. Atomic settlement at the moment of the trade is available too: setting a market's holding period to zero delivers inside the fill's own transaction, with no window and no undo, because there is nothing left to undo.

Before delivery, an undo is not a reversal. Nothing has moved yet, so releasing both legs has nothing to move back and no fee to refund; it is closer to the trade never finishing than to the trade being cancelled. Whether an approved bust undoes a pending trade or the token itself refuses the transfer at delivery, the venue fires the identical event with identical bookkeeping, one mechanism with two triggers rather than two separate features. The token's own refusal is the one case that looks like a real correction, since the trade was already reported: the price is corrected, the trade drops from clean history, and both sides are told why. Whichever backend held the leg, an undo pays out differently: a hold's units return to the trader's wallet on their own, an escrowed leg becomes a balance the trader claims from the vault.

A bust needs two venue operators. One proposes it within 24 hours of the trade, and a different operator approves or rejects it. When the trade is still pending, the proposal flags it on chain at once. Delivery skips a flagged trade, even after its due time, so the clock cannot settle a trade while the decision is open. A rejection clears the flag, and the trade delivers once it is due. An approval runs the undo at once. Only the settlement service, which holds the venue submitter role, can submit that undo on chain, and it does so only after the approval. No operator or admin key can undo a trade on its own. Before queueing the undo, the platform refuses a bust the venue would reject: a delivery that is past its due time without a review flag, or an organisation operations signer that lacks the venue submitter role. The refusal applies when the bust is proposed and again when it is approved or resumed. An operator can still flag or clear a trade by hand. Setting and clearing the flag is best effort, and a failure never cancels the proposal or the decision. When the flag cannot be set, only the holding period keeps the trade from delivering. When the flag cannot be cleared after a rejection, the platform logs the gap, and an operator clears the flag before the trade can deliver.

A trade that already delivered is outside the venue contract. Through the Platform API, a bust on a delivered trade is still possible inside the same 24 hours, and the platform first checks that the token's compliance rules allow the reversal transfers. An approved bust then sends custodian forced transfers under the operations signer: the base units go back to the seller, and the quote units the seller received and both fees go back to the buyer. The Console offers a bust only on a pending delivery.

One event, two triggers, three consequences.Two independent triggers, a bust a second operator approved before delivery or the token refusing the transfer at the due time, both fire the identical DeliveryUndone event with identical bookkeeping. That one event has three consequences: both legs return to their owners, the price is corrected and dropped from clean history, and both traders are told why.One event, two triggers, three consequences.The same figure as the desktop variant, drawn portrait for phone widths: two independent triggers converge on the identical DeliveryUndone event, which carries three consequences shown as one connected set below it.

One event, two triggers: an operator's bust and a token's own refusal both fire the identical undo, with identical bookkeeping.

Controls and evidence

Admission is checked repeatedly, not once. At intake the maker must be a participant the venue admits, and admission is checked again when a stop triggers and again immediately before matching or settlement. Five data changes re-run it too: an admission policy change, a membership revocation, a removed claim, a removed trusted issuer, and an identity registry status change. A participant who loses admission has their resting and pending orders pruned and their reservations released.

Evidence is identity-linked, sequenced, and venue-scoped: the trail carries signed orders, book events, session transitions, fills, deliveries, and undos with their reason, each naming the venue it belongs to. From that trail, the book's state is deterministically replayable, so what happened is something a regulator can recompute rather than take on trust.

What each drop copy report carries

The drop copy sends one Financial Information eXchange (FIX) ExecutionReport for each order and trade event. Besides the order, price, quantity and status tags, every report carries the fields a surveillance system uses to attribute and time the event.

FIX fieldCarried onValue
PartyID (448), PartyIDSource (447), PartyRole (452)Fills and trade cancelsThe account mnemonic of the other side of the trade, sent as a custom-coded party with role 37 (contra trader). The venue knows participants by wallet, so the mnemonic from the drop copy account map stands in for a trader id.
ManualOrderIndicator (1028)Every reportN. Every order is signed by the maker's wallet; the venue has no path for an operator to place an order for a client.
OrdType (40)Every report1 market, 2 limit, 3 stop-market, 4 stop-limit. Stop-market intake is rejected, but its refusal ExecutionReport is emitted with 3 and StopPx.
StopPx (99)Reports for a stop orderThe trigger price, in the same decimal form as Price.
Capacity (528)Reports for an account with a profileP for a principal account, G when proprietary is set, A for agency, W for sponsored. Sponsored takes precedence when both sponsored and proprietary are configured. An account without a profile carries no Capacity.
ExecInst (18)Reports for a fill-or-kill orderG (all or none). Other orders carry no ExecInst.
OrigTime (42)Every reportThe order acceptance time in UTC, kept across its reports; a refusal uses refusal.refusedAtMs, the refusal time, because the order was never accepted.

The first restart after an upgrade that changes these fields rebuilds the drop copy's saved order state from the venue log.

The integration contract

For an integrator, the Trading Venue is a versioned API route group. A chain-writing call answers with an accepted status and a status URL, and acceptance is not placement: an order becomes matchable only after its reservation confirms on chain.

An order's own status and a trade's delivery status are two separate tracks, and reading one for the other is the mistake that costs an integrator a real position.

An order's own status: four open states, closing into one of five terminal states.An order starts among four open states: pending reservation, armed, working, or partially filled. From any of those it closes into one of five terminal states: filled, cancelled, and expired close for the reasons their names say; rejected means the reservation failed and is never retried; pruned means admission was lost or a tightened rule removed the order.An order's own status: four open states, closing into one of five terminal states.The same figure as the desktop variant, drawn portrait for phone widths: the four open states grouped at top, then a connected column of the five terminal states, rejected and pruned each carrying the reason they closed.

An order's own status: four open states, closing into one of five terminal states, each naming why it closed.

A trade's delivery status: pending, then delivered or undone.A trade's delivery status starts pending. It becomes delivered once the due delivery clears the token's own check, or it becomes undone, either from an operator's bust or the token refusing the transfer. Both are terminal.A trade's delivery status: pending, then delivered or undone.The same figure as the desktop variant, drawn portrait for phone widths: pending branches to delivered, once the due delivery clears the token's check, or to undone, from an operator's bust or the token refusing the transfer.

A trade's delivery status, tracked separately from the order's own status: pending until the due delivery runs, then delivered or undone.

The full contract, every status, every field, every error, is in the API reference.

Placing an order through to a final, reported trade state.The integrator places a signed order and receives an accepted status with a status URL. The platform API reserves through the token's own backend and receives confirmation, then reports the order as working. After a match, the platform submits a fill batch to the venue contract, which reports fill events with a delivery due date; the integrator's status becomes filled with delivery pending. When the due delivery runs, the venue contract moves both legs and the fee and reports back delivered, or undone with a reason. The integrator's final status reflects that outcome.Placing an order through to a final, reported trade state.The same exchange as the desktop variant, drawn portrait for phone widths: place order, accepted with a status URL, reserve and confirm, status working, submit a fill batch, fill events with delivery due, status filled with delivery pending, the due delivery moving both legs and the fee, delivered or undone, and the integrator's final trade state.

Place a signed order, treat it as working only after its reservation confirms, and treat units as received only after the trade reports delivered.

Frequently asked questions

What is the difference between a venue and a market?

A venue is a tenant's own market: its own on-chain identity, access manager, admission policy, calendar, and escrow vault, and a tenant runs as many as it needs. A market is one trading line on one venue. The same pair listed on two venues is two markets, with separate order books, reservations, trade histories, and prices, and halting one leaves the other trading.

What does an issuer give up by listing a token on a venue?

The right to reserve on that one venue, and one custodian role for the platform's reversal path. The issuer attaches the token's hold feature and authorizes the venue as a reserver on it, which lets the venue commit units inside a holder's own wallet and move only what it committed. The issuer sets how long a hold stays effective and can drop the venue at any time, which releases its holds, prunes its resting orders, and undoes its pending deliveries. A listing that lacks this admission is refused before the market goes live. Listing also grants the custodian role on the token to the organisation's operations signer, when the listing signer can grant roles on the token. The platform uses that role only to reverse a delivered trade after an approved bust.

Who holds the assets while an order is working?

It depends on the leg. Units of a DALP token stay in the trader's own wallet, held for that venue, and leave the wallet only at delivery. Units of a plain ERC-20 sit in that venue's escrow vault, which pays them out only to the trader as a claimable credit or to a counterparty at delivery. The hold token feature is what reserves those units: governance authorizes the venue on the token, and releasing a hold is not a transfer.

Can the operator reverse a trade?

Not alone. One operator proposes a bust within 24 hours of the trade, and a different operator approves it. Before delivery, the approved bust is a release rather than a reversal. Both legs are still reserved, so the settlement service undoes the trade on the venue by releasing them; no fee has moved, and nothing is forced back from anyone. The proposal holds the trade on the venue until the decision, so delivery cannot overtake it. Once the trade is delivered, the venue offers no undo. An approved bust then reverses the trade with custodian forced transfers under the operations signer, which the Platform API supports and the Console does not offer.

Is an undo the same as a refund?

No. A refund returns something that was paid. Before delivery, nothing has been paid: both legs are still sitting in reserve, so an undo releases them back to where they already were rather than moving anything. The one case that looks like a real correction is a delivery the token refuses after the trade was already reported, and even there the fix is a correction to the record, not a payment reversed.

Who sets trading fees and who receives them?

The venue carries default maker and taker fees and a default fee account, in basis points of the quote leg, and a market inherits or overrides them; zero is a valid schedule. The fee moves at delivery, into the market's fee account, in the same transaction as the legs.

Does the venue provide liquidity or market makers?

No. The venue matches and settles orders; it never supplies capital or acts as a counterparty. Convening liquidity stays a decision for the operator.

  • Asset Lifecycle: the whole working life of a regulated tokenized instrument, from issuance through servicing to redemption; settling trades is one of the operations this venue performs inside that same life.
  • Primary Offering: the contract-governed first sale of newly issued units to investors, the issuance step this venue's whole life continues from.
  • XvP Settlement: An on-chain exchange between two or more parties in which every leg settles together in one transaction or none does; the platform's bilateral settlement primitive, without an order book.
  • Settlement Verdict: The recorded end state of an on-chain operation submitted to the platform, and the only signal from which the success of the operation may be reported.
  • Market Data: The governed on-chain source for prices, valuations, and exchange rates that a market's price protection band depends on, and that a token's reference market publishes its close to.

On this page