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. An auction that leaves it unfilled carries it to the next auction on a market set to carry, which is the default for a private market
Good-til-date (GTD)Carries its own signed expiry. The matching engine keeps its own clock: every new order and a once-a-second market pass advance it past due dates, so the order expires on reaching its date even when no new order arrives
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. On a leg that the token's hold feature backs, each reservation carries a single-use receipt on the venue. When no order rests on a reservation, the platform closes its receipt, which returns exactly the units that reservation froze, or stops it from landing if it has not landed yet. The trader's budget counts the reservation until the finalized chain shows the receipt closed. Once resting, the book shows each price level, streamed to readers as a full snapshot followed by diffs. Each market sets which attributes of a level its participants see: the price always, and the resting quantity and order count when the market allows them. A hidden attribute is sent as null, and the venue operator sees every attribute. 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. Each holder's surplus is its own release request, and the platform retries it durably, up to five attempts, before it falls back to a manual resolution by an operator. The settlement stands either way. The surplus release and the release of an expired good-till-date order each carry the drain serial recorded on the order's reservation at placement, and the venue skips an entry whose serial a trader's exit has moved, so a delayed release never returns backing that a newer order holds. If the venue reverts such a release as exceeding the reservation, retries stop: the amount stays counted and is reported for an operator. Placement refuses an order when the venue's drain serial cannot be read.

A venue price band limits both accepted limit prices and trade prices. The venue default starts Off. Each instrument inherits that default, turns the policy off, or overrides it for its market models.

PolicyRange
StaticA fixed minimum and maximum price in the quote token
DynamicAn initial percentage above and below the previous official close, with an expansion step and a maximum percentage

Both bounds are inclusive. A dynamic band widens only the side a trade reaches, by one expansion step, up to the cap. The reference remains the previous official close until the next session close resets the band. Without an anchor, a dynamic band blocks trading rather than choosing a reference price.

The venue rejects an out-of-range limit order as above or below the band. Continuous fills and auction clearing prices must also stay inside it. A market order is signed at its separate protection-band edge, but its fills still stop at the effective price band. Saving a tighter policy cancels excluded resting orders and releases their reserved balances.

Existing issuer floors and legacy anchor-based widths remain effective for stored configurations and persisted history. Turning the new policy off does not remove those limits or per-order size limits. The separate market-order protection band also remains in force.

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.

Validus OLC v6.4 mapping

The Validus order-lifecycle (OLC) file is a comma-separated file with a fixed 68-column schema. The dsched drop-copy olc command emits the file from the drop-copy reports. The mapping below records the source used for each column. empty means that the drop-copy report does not carry a value for that field.

OLC columnSourceMapping note
TMreport transactTimeMsEpoch seconds.
ORIG_TIMEFIX tag 42OrigSendingTime, parsed to epoch seconds.
SENDING_TIMEemptyThe report does not carry the session sending time.
TRANSACT_TIMEreport transactTimeMsEpoch seconds for every event type.
SIDEFIX tag 54
QTYFIX tags 32, 151, 38, and 14Fill size for F/G/H; remaining quantity from tag 151 for 5/E; exact order quantity minus cumulative fills for 4/8/C; otherwise order quantity.
PRICEFIX tag 31, 99, or 44Last price for F/G/H; market orders are 0; otherwise stop price when present, then limit price.
SYMBOLFIX tag 55
SECURITY_IDFIX tag 48
CLIENT_OIDFIX tag 11
EXEC_IDFIX tag 17
VENUE_OIDFIX tag 37
SECONDARY_CLIENT_OIDemptyNo secondary client order ID in the report.
SECONDARY_EXEC_IDemptyNo secondary execution ID in the report.
COUNTERPARTY_IDFIX tag 448Contra-party ID from the party block. Whether Validus instead expects the venue trader or operator ID remains an open question for Finstreet.
ACCOUNTFIX tag 1
ROOT_SYMBOLemptyNo root symbol is present in the report.
TRADEIDFIX tag 880
TRD_MATCH_IDFIX tag 880Same trade ID; no distinct match ID is present.
SELF_MATCH_PREVENTION_IDempty
CURRENCYFIX tag 15
SENDER_COMP_IDsession sender CompIDEmpty when no session ID is supplied.
SENDER_SUB_IDsession sender SubIDEmpty when no session ID is supplied.
TARGET_COMP_IDsession target CompIDEmpty when no session ID is supplied.
TARGET_SUB_IDsession target SubIDEmpty when no session ID is supplied.
DELIVER_TO_COMP_IDsession deliver-to CompIDEmpty when no session ID is supplied.
DELIVER_TO_SUB_IDsession deliver-to SubIDEmpty when no session ID is supplied.
EXEC_BROKERempty
TEXT_NOTEFIX tag 58Control characters are removed.
CLEARING_ACCOUNTempty
CLEARING_FIRMempty
ISINFIX tag 48 when tag 22 is 4Empty for other security ID sources.
EXEC_INSTFIX tag 18
TIME_IN_FORCEFIX tag 59
EXPIRE_TIMEFIX tag 126Parsed to epoch seconds.
LAST_MKTFIX tag 30
EX_DESTINATIONemptyNo distinct execution destination is present.
SECURITY_EXCHANGEFIX tag 30Same market identifier as LAST_MKT.
ORD_TYPEFIX tag 40
CAPACITYFIX tag 528
ORIG_CLIENT_OIDFIX tag 41
RELATED_IDEarliest known order ID in the fileKeeps the same root across replacement reports. When earlier reports are outside the file, retains the earliest available tag 41; otherwise uses tag 11.
ON_BEHALF_OF_COMP_IDsession on-behalf-of CompIDEmpty when no session ID is supplied.
ON_BEHALF_OF_SUB_IDsession on-behalf-of SubIDEmpty when no session ID is supplied.
CUM_QTYFIX tag 14
LEAVES_QTYFIX tag 151
CFI_CODEempty
MATURITY_DATEFIX tag 541
PUT_OR_CALLFIX tag 201
STRIKE_PRICEFIX tag 202
OPEN_CLOSEFIX tag 77
TRADE_CLIENT_IDemptyNo distinct trade-client ID is present.
VENUEFIX tag 30
ORD_STATUSFIX tag 39
LOCATEREQDempty
CLIENT_TAGSemptyNo client tags are present in the report.
DISPLAY_QTYempty
OPERATOR_IDemptyHeld empty while the COUNTERPARTY_ID interpretation remains open.
SPREAD_IDempty
MSG_CLASSFIX tag 150 and tag 39Derived Validus lifecycle class.
IS_OPERATIONALconstant1.
SODconstant0; the command does not generate start-of-day snapshot rows.
LEG_FILLconstant0; no leg fills are present.
STOPFIX tag 99 and tag 401 when StopPx is present or order type is stop-market or stop-limit, otherwise 0.
SPREADconstant0; no spread orders are present.
TAG_1028FIX tag 1028
GEO_LOCATIONempty
AGGRESSORFIX tag 1057Y becomes 1, N becomes 0; other values are empty.

The current drop-copy report contract has no spread envelope, leg, trader, or operator identity fields. It therefore emits SPREAD_ID empty, LEG_FILL and SPREAD as 0, and preserves replacement ancestry through RELATED_ID; a future spread/leg source must be added to the report contract before those fields can be populated without guessing.

The report body supplies the event fields. Session identifiers are not stored in that body, so the sender, target, deliver-to, and on-behalf-of columns come from the drop-copy session context and are empty when that context is unavailable.

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