> For the complete documentation index, see [llms.txt](https://docs.selcier.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.selcier.xyz/markets-and-capital/how-trades-settle.md).

# How trades settle

Trades and issuance on Selcier settle as atomic delivery-versus-payment on Robinhood Chain. This page covers the stablecoins used, what confirmation means, and how fees come out.

On Selcier, value only ever moves on-chain as **delivery-versus-payment**: the shares and the stablecoin travel in one transaction, or neither travels. You will not encounter a clearing period or a settlement agent, and one side can never be left having delivered while the other has not.

The same applies across all routes: [distributions](/walkthroughs/send-a-payout.md), [permissioned pools](/markets-and-capital/gated-pools.md), [RFQ trades](/markets-and-capital/quote-based-trading.md), [Liquidity Windows](/markets-and-capital/scheduled-windows.md) and [primary offerings](/markets-and-capital/primary-raises.md).

## Moving both legs at once

A settlement contract either holds or pulls the two legs of a trade, and then executes all transfers within a single transaction:

| Route            | Share leg                                  | Stablecoin leg                                                         |
| ---------------- | ------------------------------------------ | ---------------------------------------------------------------------- |
| Offering close   | Each investor receives a mint              | Escrow moves out to the company treasury                               |
| Liquidity Window | Shares locked by sellers go to buyers      | Stablecoin locked by bidders goes to sellers, with any excess returned |
| RFQ fill         | Seller delivers directly to the buyer      | Buyer pays the seller directly                                         |
| Pool swap        | From pool to buyer, or from seller to pool | Opposite to the shares                                                 |

The share token's `canTransfer` check covers all share transfers in these flows. On a single trade, a failed check or a reverted transfer unwinds the whole transaction, so partial settlement cannot occur. Settlements involving many people treat a failing holder as described under [Failed settlements](#failed-settlements).

In a Liquidity Window, a single `clear(windowId)` transaction settles all matched orders. The limit of 200 orders per window is what keeps that transaction under a block's gas limit.

## Supported stablecoins

By default, trades settle in USDG. Companies can turn on other stablecoins live on Robinhood Chain for a share class, though any one offering or window names a single asset. Console displays the supported list, and `GET /v1/share_classes/{id}` returns it.

Each stablecoin amount uses that stablecoin's own decimals, and share amounts use the token's 18 decimals. Contracts express a price as stablecoin units per whole share of 1e18 raw token units. Settlement math runs on those raw units without applying `uiMultiplier`, which is what converts raw units into a share count.

## Two levels of confirmation

Selcier reports both of the confirmation levels Robinhood Chain provides.

**Sequencer.** As transactions arrive, the Robinhood Chain sequencer orders them and publishes them to its feed, usually in much less than a second. A settlement transaction's result is fixed from the moment it reaches the feed, and that is when Portfolio and Console mark the trade as settled.

**L1.** Batches of transactions are posted by the sequencer to Ethereum, with blobs providing data availability. When a transaction's batch has been posted, Ethereum's ordering guarantees extend to that transaction.

Alongside `block_number` and `tx_hash`, API responses and webhook events carry a `confirmation` field set to `sequencer` or `l1`. If your integration acts off-chain after a settlement, for example by wiring funds or releasing goods, hold off until it reads `l1`.

## Failed settlements

A few things can cause a failure: a token pause, a frozen balance, or a claim that expires after an order is placed and before clearing. With a single trade, a revert means no value moves. With settlements across many people, contracts are designed so that a problem with one holder never holds up the rest.

Handling differs by route:

| Route                 | What happens                                                                                                                                                                                                                                                                                                                                                                                                            |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Offerings**         | Close tests each subscription a second time. Someone failing the rules at that point gets a refundable subscription and no shares, while the offering closes normally for all others.                                                                                                                                                                                                                                   |
| **Liquidity Windows** | Bids from buyers failing the rules at clearing are left out and refunded, and the remaining orders determine the clearing price. If a token delivery still fails (say, unfilled shares going back to a seller with an expired claim), the window emits `DeliveryDeferred` and retains the tokens for their owner in place of reverting. After passing the rules again, the owner collects them through `claimDeferred`. |
| **RFQ and pools**     | The transaction reverts with a reason code. A quote that has not expired can still be filled.                                                                                                                                                                                                                                                                                                                           |

In all of these cases, the [reason codes](/build-on-selcier/transfer-outcomes.md) match what `canTransfer` returns.

## Fee handling

Platform fees come out of the stablecoin leg during settlement itself. Transaction fees never arrive as a separate invoice, and on-chain you can see each one as a stablecoin transfer to Selcier's fee recipient within that transaction.

| Route            | Fee mechanics                                                                                  |
| ---------------- | ---------------------------------------------------------------------------------------------- |
| Offering         | Deducted at close as a percentage of the capital raised, and not charged if the offering fails |
| Liquidity Window | A notional percentage shared between both sides of the trade                                   |
| RFQ              | A notional percentage shared between both sides of the trade                                   |
| Pool             | Determined by the pool. `PoolGate` only checks rules and collects nothing                      |
| Distribution     | Nothing is charged per transaction                                                             |

Windows and RFQ apply the same rounding: buyers pay a rounded-up price plus their fee, sellers get a rounded-down price less theirs, and rounding dust lands with the fee recipient as well. Each company's rates are fixed at contract deployment, with the company's `IssuerTimelock` as the only way to change them. The ceiling enforced on-chain is 5% for an offering, and for a window or RFQ trade it is 2.5% per side. See [Fees](/reference/fees.md) for more.

## Paying for gas

ETH is the gas currency on Robinhood Chain. Investors and employees have gas sponsored by Selcier on all Portfolio actions, which removes any need for them to hold ETH. For their own integrations, companies may sponsor gas through the API or send transactions from wallets of their own.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.selcier.xyz/markets-and-capital/how-trades-settle.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
