# Booked movements

Source: https://docs.settlemint.com/docs/console/asset-management/manage/booked-movements
Keep a share class token in step with a transfer agent's register: while the feature is attached, units move only when the administrator books a movement.

Booked movements keep a share class token in step with a share register that a transfer agent or fund administrator keeps off chain. The register stays the source of truth. Every change to a holding is a movement. An investor can request it, or the administrator can enter it directly, and only the administrator's booking, with the reference of its register entry, moves the units, in the same transaction. While the feature is attached, the token refuses every mint, burn, transfer, forced transfer and wallet recovery that is not the booking of a movement. The platform stores the register reference you enter and does not check it against your register, so match the two on [Reconciliation](https://docs.settlemint.com/docs/concepts/records-and-evidence/reconciliation).

The movements page and the Investor portal call the feature "Booked movements". The token's **Features** tab lists it as "Register lines", and the Platform API calls each movement a register line.

Each share class is its own token. The Share-Class Mirror template records the class name in its **Share class** field, and a movement belongs to one token, so a switch between classes is a redemption booked on one class token and a subscription booked on the other.

![Booked movements page of a share-class mirror token with the Configuration panel and the Requested movements table](https://docs.settlemint.com/docs/screenshots/console-booked-movements-page.light.en.webp)

[Screenshot] The "Booked movements" page with the "Configuration" panel and the "Requested movements" table.

The title row carries "Book a movement". The "Configuration" panel shows the movement count, the requested movements waiting for the administrator, and "Investors can request" with "Edit". The "Requested movements" table lists each movement's number, type, parties, amount and request date, with a "Book" action.

## Before you start [#before-you-start]

- **A token with Booked movements.** Issue the token from the Share-Class Mirror template on [Issue asset](https://docs.settlemint.com/docs/console/asset-management/issue-new-asset). The template attaches Historical balances, Hold and Booked movements and has no compliance policy, because the register decides who may hold the class. Historical balances lets a [dividend yield](https://docs.settlemint.com/docs/concepts/modeling-assets/token-features/income#dividend-yield) feature attach later and pay on the booked balances. A new token starts halted unless you check "Open for transfers once issued". Select "Resume token operations" in the token's "Actions" menu to launch it before the first booking. An account with Governance plus Supply management and Custodian, or Governance plus the admin role, can also attach Booked movements to an existing token, under "Attach a feature" on the token's "Features" tab, where the sheet asks which moves investors can request, or through the [token feature endpoints](https://docs.settlemint.com/docs/api-reference/v2). Attach Hold first, from "Attach a feature" on the same tab, or the attach is refused.
- **The right role on the token.** The "Who can do what" table lists the role each task needs. The token's Permissions tab shows who holds each role.
- **Verified recipients.** The token checks the recipient's identity on each booking. A booking that sends units to a wallet without a verified identity reverts, and a requested movement then stays requested. Register the investor's identity before you book their first subscription.
- **Wallet verification.** Booking, rejecting, cancelling and saving the request settings each ask for your wallet verification, the PIN code or authenticator code you set up under [Security](https://docs.settlemint.com/docs/console/my-account/security). The investor's requests and withdrawals in the Investor portal ask for it too.

## Who can do what [#who-can-do-what]

| Task | Who can do it |
| --- | --- |
| Open the Booked movements page | Any signed-in user, when the feature is attached. Administrators with the Supply management or Governance role see every movement. Anyone else sees the movements their own wallets give, receive or opened. |
| Book or reject a requested movement, book directly, mint or burn | An administrator with the Supply management role |
| Force a transfer on a token with Booked movements | An administrator with the Supply management role. The **Forced transfer** page also asks for the Custodian role, but **Book a movement** with **Transfer** moves a holder's units without their request on Supply management alone. |
| Change the moves investors can request | An administrator with the Governance role |
| Request a subscription, transfer or redemption | An investor, for their own wallet |
| Cancel a requested movement before it is booked | The investor who opened it, or a Supply management administrator |

## Steps [#steps]

### Open the movements page [#open-the-movements-page]

Open the token and select its **Features** tab. Under "Records", the "Register lines" section shows two counts, "Requested" and "Movements", and the link "Open the register". The link opens the "Booked movements" page. A token without the feature shows "Booked movements are not enabled for this asset" on that page.

The page holds one panel and two tables:

- The **Configuration** panel shows the number of movements, the number of requested movements with "waiting for the administrator" while any wait, and "Investors can request" with the moves investors may request.
- The **Requested movements** table appears only while at least one movement waits.
- The **Movement history** table lists every movement with its "Movement" number, "Type", "From", "To", "Amount", "Register reference", "Corrects", "Status" and "Decided" date. "Opened" is a column you can show. A movement's status is "Waiting for the administrator", "Booked in the register" or "Cancelled". The table filters by type and status.

A user who lacks Supply management sees **Book a movement** disabled, and a user who lacks Governance sees "Edit" disabled. Each gives "Supply management holders book movements. Governance holders set what investors can request." as the reason.

### Book or reject a requested movement [#book-or-reject-a-requested-movement]

In **Requested movements**, open the row's actions. A Supply management administrator sees "Book" and "Reject". An investor who opened the request and holds no Supply management role sees "Cancel request" on their own rows only.

"Book" opens "Book movement #" followed by the movement number. Enter the "Register reference", the entry number or identifier your register gave this movement, such as `DBMF-REG-0003`, and continue. The "Review the booking" step repeats the movement and says "The units move as soon as you book the movement." Select **Book movement** and confirm. The platform releases the units the request reserved under the Hold feature and moves them in the same transaction. If the transaction reverts, nothing moves and the request stays requested with its units held. The movement shows "Booked in the register" with its reference.

"Reject" opens "Reject movement #" followed by the number: "The investor's units are released and the movement is cancelled." The review notes "A rejected movement can't be booked again. The investor can send a new request." Select **Reject movement** and confirm. No units move, and the movement records who cancelled it.

The **Book movement**, "Reject movement" and "Book directly" sheets, and the "Mint", "Burn" and "Forced transfer" sheets on a token with Booked movements, ask the platform whether it would accept the write while you fill the form. A refusal shows in the sheet with its reason and fix, for example that the movement is already booked, that the holder's unfrozen balance falls short of the amount, or that a register reference is missing, and the review button stays off until you change the entry. You learn it before you enter your wallet verification. The check books nothing and signs nothing. If it cannot answer, it does not block you and the write returns its own refusal. The Investor portal's request and withdraw sheets run the same check, so an investor sees the refusal before the wallet verification as well.

![Book movement #3 sheet with the Register reference field](https://docs.settlemint.com/docs/screenshots/console-booked-movements-book-sheet.light.en.webp)

[Screenshot] The sheet is titled "Book movement #3" and its "Details" step asks for one required field, "Register reference", the reference of this movement in the register.

"Review" shows the movement before you confirm.

### Book a movement directly [#book-a-movement-directly]

Select **Book a movement** on the title row. The sheet books a move that no investor requested: "Record a move in the register and apply it to the token in one step."

1. Choose the **Type of movement**: "Subscription", "Redemption", "Transfer" or "Correction".
2. Enter the parties. A subscription asks for **To**, the holder who receives the units. A redemption asks for "From", the holder whose units leave. A transfer asks for both, and the two must differ.
3. Enter the **Amount**. When units leave a holder, the sheet shows "Available to move" with the holder's balance less frozen units and less the units their open requests hold. A larger amount shows that it is more than the amount available, and the sheet cannot continue.
4. Enter the **Register reference**.
5. Continue to "Review the movement", which notes that the movement is booked and the units move right away. Select **Book movement** and confirm.

![Book a movement sheet set to Subscription, with To, Amount and Register reference](https://docs.settlemint.com/docs/screenshots/console-booked-movements-direct-sheet.light.en.webp)

[Screenshot] The "Book a movement" sheet set to "Subscription", with "To", "Amount" and "Register reference".

"Amount" takes whole units of the token, and "Review" stays disabled until the fields are filled.

### Correct a booked movement [#correct-a-booked-movement]

A booked movement is not edited after booking. To fix a mistake, book a new movement that corrects it. In "Book a movement", choose **Correction**. Enter "From", "To" or both, as the correction needs, the "Amount" and the "Register reference", then pick the booked movement it fixes in "Movement to correct". The list shows the most recent booked movements by number and register reference.

For example, a subscription of 1,000 units booked as `DBMF-REG-0003` should have been 100 units. Book a correction from the holder for 900 units with the reference `DBMF-REG-0004` and pick `DBMF-REG-0003` in **Movement to correct**. The holder then holds 100 units, and the "Corrects" column of the correction names the original movement.

### Mint, burn or force a transfer [#mint-burn-or-force-a-transfer]

On a token with Booked movements, the "Mint tokens", "Burn tokens" and "Forced transfer" pages in the token's **Actions** menu book a movement. Each page takes one row only and adds a required "Register reference" and an optional "Corrects movement", which lists booked movements and defaults to "No correction". The page cannot continue until you enter a reference. On success the message reads "Movement booked".

A mint books a subscription to the recipient. A burn books a redemption from the holder. A forced transfer books a transfer between the two holders. A booked movement is not charged a transaction fee, so the mint and burn pages show no fee. On a token without Booked movements, these pages stay as [Mint and burn](https://docs.settlemint.com/docs/console/asset-management/manage/mint-burn) and [Transfers](https://docs.settlemint.com/docs/console/asset-management/manage/transfers) describe them.

### Choose what investors can request [#choose-what-investors-can-request]

In the "Configuration" panel, a Governance administrator selects **Edit** beside "Investors can request". The sheet "Moves investors can request" has one checkbox each for "Subscription", "Transfer" and "Redemption": "Choose which moves an investor can ask for. Administrators can always book any movement." A Supply management administrator can book any movement type, subject to the checks under [What the platform checks](#what-the-platform-checks). You can clear all three, and the panel then shows "None". The review notes "Investors can no longer request the moves you switch off. Movements already requested stay in the queue." Select "Save settings" and confirm.

A token issued from the Share-Class Mirror template starts with all three moves allowed. An issuance or attach that names no moves allows all three.

## What the investor sees in the Investor portal [#what-the-investor-sees-in-the-investor-portal]

The holding page of a mirror token shows a **Booked movements** card: "The administrator books each movement in the register. Your holding changes when they do." The card lists the investor's own movements, newest first. It shows the units still free to request as "Available to request".

- **Request a move.** The card shows "Request subscription", "Request transfer" and "Request redemption" for each move the token allows. Transfer and redemption are unavailable while no units are free. The sheets "Request a subscription", "Request a transfer" and "Request a redemption" ask for the amount, and a transfer also asks for the "Recipient". An amount larger than the free units shows "You can request at most" the free amount with "Open movements hold the rest." Select "Send request". The message reads "Request sent. It is waiting for the administrator to book it in the register."
- **Follow a move.** Each row reads, for example, "Transfer of 40 DBMF to" an address, with its status: "Waiting for the administrator", "Booked in the register" with its register reference, "Refused by the administrator", "Withdrawn by you", "Withdrawn by the requester" when another holder withdrew a transfer to the investor, or "Cancelled".
- **Withdraw a request.** A requested movement the investor opened shows "Withdraw". The sheet "Withdraw request" says "Withdraw this request. Your units are released straight away." The message reads "Request withdrawn."

The Console holding page of a mirror token (**Wealth**, "Portfolio", then the holding) shows the same "Booked movements" card to a signed-in holder, with the same request, follow and withdraw steps, the same checks and the same messages. A token without Booked movements shows no card. On a bank cash-out, "Create redemption line" opens the same "Request a redemption" sheet in the Console.

A transfer from the holding page's ordinary transfer sheet becomes a requested transfer too. It waits as **Waiting for the administrator** and the balance does not change until the administrator books it. When a movement changes state, the card refreshes the holding balance.

![Booked movements card on an Investor portal holding page](https://docs.settlemint.com/docs/screenshots/portal-holding-booked-movements.light.en.webp)

[Screenshot] The holding page with the "Booked movements" card, its request buttons and the investor's movements.

The card shows the units available to request and three movements: two requested transfers waiting for the administrator, with "Withdraw" on the one the investor opened, and a subscription booked in the register with its register reference.

## What the platform checks [#what-the-platform-checks]

### On a request [#on-a-request]

- The token allows this kind of move. A subscription names the investor as the receiver and holds nothing, and an investor has at most one open subscription request per token.
- A transfer or redemption moves the investor's own units. The request holds the amount through the Hold feature until the movement is booked or cancelled, so the investor cannot spend those units elsewhere. The amount cannot exceed the units that are free.
- The amount is more than zero, and the two parties differ.
- The sending wallet is not marked lost, and the token has the Hold feature.
- The participant account that owns the sending wallet does not carry the `securities-transfers` restriction. An administrator lifts it from the participant's account, as [Restrict a wallet](https://docs.settlemint.com/docs/console/participants/restrict-a-wallet) describes.

### On a booking [#on-a-booking]

- The caller holds Supply management, and the movement is still requested.
- The register reference is not empty. A correction names a movement that is booked.
- The move passes the token's own checks. A booking to a wallet that is not verified reverts, and a requested movement then stays requested with its units held.
- A burn or forced transfer cannot spend frozen units or units that open requests hold. The API refuses an amount larger than the holder's balance, less frozen units, less held units, before it sends a transaction. A mint is not checked against a balance.

### On a cancellation [#on-a-cancellation]

The investor who opened the movement or a Supply management administrator can cancel it. Anyone else is refused. The movement records who cancelled it, and the Investor portal shows the difference as "Withdrawn by you" or "Refused by the administrator".

## What a mirror token refuses [#what-a-mirror-token-refuses]

The token refuses every move that is not the booking of a movement. A plain transfer, a mint, a burn, a custodian forced transfer and a wallet recovery sent straight to the contract all revert with [DALP-4481](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499): "This token only moves through a movement the administrator books." To move a lost wallet's units, cancel its open requests, unfreeze any frozen units, then book a transfer from the lost wallet to its replacement. The booking does not check that the recipient is the wallet paired through identity recovery, and it carries no freeze across, so freeze the units again on the replacement if they must stay frozen.

Other token features and add-ons that move units are refused the same way. Features that do not move units, such as dividend yield, keep working. A dividend yield feature pays holders on their booked balances.

The Platform API turns its own supply and transfer calls into movements, so a client that calls these routes books or requests a movement instead of being refused:

| Call | Route | On a token with Booked movements |
| --- | --- | --- |
| Mint | `POST /api/v2/tokens/{assetId}/mints` | Books a subscription to the recipient. Needs `registerReference`, takes an optional `corrects`, and takes one movement per call. |
| Burn | `POST /api/v2/tokens/{assetId}/burns` | Books a redemption from the holder, under the same rules. |
| Forced transfer | `POST /api/v2/tokens/{assetId}/forced-transfers` | Books a transfer between the two holders, under the same rules. The booking needs Supply management. |
| Transfer | `POST /api/v2/tokens/{assetId}/transfers` | Opens a transfer request from the calling wallet to the recipient for the amount, one transfer per call. A transfer that spends an allowance is not converted, and the contract refuses it. |

A mint, burn or forced transfer without `registerReference`, or with more than one movement, is refused with [DALP-14068](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#client-request-errors): "A token with booked movements needs a register reference and one movement per call". The same code refuses `registerReference` or `corrects` on a token without the feature.

## Feature combinations [#feature-combinations]

Booked movements needs the Hold feature, which reserves the units of an open request. The Platform API refuses an issuance or attach without Hold, and refuses to detach Hold while Booked movements is attached.

Booked movements cannot sit beside Management fee, Conversion, Conversion minter, Supply delegate or Maturity redemption, because each of these moves the token outside a movement. A template, issuance or attach that combines them is refused.

Corporate actions that move units are not offered on a mirror token: "Stock dividend", "Distribution paid in tokens", "Bond coupon paid in tokens", "Bonus issue", "Rights issue", "Capital decrease", "Stock split", "Reverse split", "Spin-off", "Buyback" and "Partial redemption". A "Cash dividend" or a cash distribution stays available once dividend yield is attached. A fund token with Booked movements also takes no [dealing requests](https://docs.settlemint.com/docs/console/asset-management/manage/fund-dealing), because its subscriptions and redemptions are movements.

The feature cannot be replaced with a new instance, because open requests and the units they hold would stay on the old one. The refusal reads "This feature cannot be replaced while its requested lines may hold units. Change its requestable kinds through the settings route instead." Change the requestable moves on the existing feature instead.

## Detach and attach the feature again [#detach-and-attach-the-feature-again]

Book or cancel every requested movement before you detach the feature, so no units stay held.

An account that can set the feature list (Governance with Supply management and Custodian, or with the admin role) can detach the feature with **Detach** in the actions menu of the "Register lines" section on the "Features" tab, or through the token feature endpoints. While the feature is detached, the token no longer refuses plain moves, the API cannot request, book or cancel the detached instance's movements, and the movement lists keep them as history. A movement that was still requested shows as "Cancelled", dated from the detach, but its units stay held on the chain. Attach the same instance again to book or cancel it and release the units. An attach that names the same moves investors could request when the instance was created brings that instance back: its requested movements show as requested once more and can be booked or cancelled. An attach with any other set starts a new instance with no movements.

## You should see [#you-should-see]

- On the **Booked movements** page, open "Movement history" and find the movement.
- A booked movement reads "Booked in the register" with its "Register reference" and a "Decided" date.
- A rejected or cancelled one reads "Cancelled", and a request nobody has decided still reads "Waiting for the administrator" and stays in "Requested movements".
- A correction names the movement it fixes in "Corrects". Then open the "Holders" tab and compare the holder's balance with the booked amount, and check the entry on "Activity" against the transaction.
- If the balance does not match, the booking did not land, so read the transaction on "Activity" and the table under Troubleshooting.
- In the Investor portal, the holding page shows the same status on the investor's "Booked movements" card and refreshes the balance when a movement changes state.

## Troubleshooting [#troubleshooting]

Each code below refuses the request as sent. Fix the cause first. Codes about a movement's state can clear once the state changes. The DALP-14000 codes come from the Platform API and the DALP-4400 codes from the token contract.

| Code | Message | What to do |
| --- | --- | --- |
| [DALP-4481](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | This token only moves through a movement the administrator books. | Request the move, or ask the administrator to book it. |
| [DALP-14068](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#client-request-errors) | A token with booked movements needs a register reference and one movement per call | Send one movement with `registerReference`, or drop both fields on a token without the feature. |
| [DALP-14058](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#domain-rule-errors) | The movement could not be acted on | The feature is not attached, the movement does not exist on it, or it is already booked or cancelled. List the movements again. |
| [DALP-14096](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#domain-rule-errors) | The movement was not found | No movement with this number is visible to you on this token. Use a number from the list. |
| [DALP-14097](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#domain-rule-errors) | A subscription request is already open | Wait until the open subscription request is booked or cancelled. |
| [DALP-14453](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#domain-rule-errors) | The participant cannot transfer securities | Ask an administrator to lift the `securities-transfers` restriction on the participant account. |
| [DALP-9482](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference#domain-rule-errors) | The holder has insufficient available tokens | Reduce the burn or forced transfer, or wait until open requests end or units are unfrozen. |
| [DALP-4482](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Movement not found | Check the movement number against the token's list. |
| [DALP-4483](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Movement cannot change state | Refresh the register and check the movement's state. |
| [DALP-4484](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Request kind not allowed | Request a move the token allows, or ask Governance to allow it. |
| [DALP-4485](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Subscription request already open | Wait until the open subscription request is booked or cancelled. |
| [DALP-4486](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Movement parties invalid | Name two different parties, at most one of them the zero address. |
| [DALP-4487](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Register reference missing | Enter the register reference. |
| [DALP-4488](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Corrected movement invalid | Name a booked movement to correct. |
| [DALP-4489](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Request kinds invalid | Choose any combination of subscription, transfer and redemption. |
| [DALP-4490](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Wallet marked lost | Request from another wallet, or have the administrator book the recovery. |
| [DALP-4491](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Hold feature missing | Attach the Hold feature to the token. |
| [DALP-4492](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-4400-4499) | Booked movements feature detached | Attach the feature again if you still need it. |

The Console shows **Requested movements could not load** with "Check your connection and try again." and a retry when the queue cannot be read. The Investor portal shows "Your requests are unavailable right now." with "Retry", and "Your account doesn't have access to this information." when the caller cannot read the token's movements. A failed request or withdrawal reads "Your request could not be sent:" or "Your request could not be withdrawn:" followed by the reason.

## Frequently asked questions [#frequently-asked-questions]

### Does booking move the units, or is there a separate settlement step?

Booking is the move. The booking records the register reference and moves exactly the movement's amount in the same transaction, so a booked movement and its unit move succeed or revert together.

### Why is an investor's transfer not refused outright?

The investor's wallet or app sends an ordinary transfer, and the Platform API turns it into a transfer request that holds the units. Nothing moves until the administrator books it. A transfer sent straight to the contract, outside the Platform API, is refused with DALP-4481.

### Can the administrator book a move the token does not let investors request?

Yes. The request settings limit what investors can ask for. A Supply management administrator can book a subscription, redemption, transfer or correction at any time, from any holder and without that holder's request. No setting under **Approvals** holds a booking for a second person.

## API routes [#api-routes]

| Task | Route |
| --- | --- |
| List movements | `GET /api/v2/tokens/{assetId}/features/register-lines/lines` |
| Read one movement | `GET /api/v2/tokens/{assetId}/features/register-lines/lines/{lineId}` |
| Request a movement | `POST /api/v2/tokens/{assetId}/features/register-lines/lines` |
| Book a requested movement, or book directly | `POST /api/v2/tokens/{assetId}/features/register-lines/bookings` |
| Cancel a requested movement | `POST /api/v2/tokens/{assetId}/features/register-lines/lines/{lineId}/cancellations` |
| Set the moves investors can request | `PUT /api/v2/tokens/{assetId}/features/register-lines/settings` |
| Check a request, booking or cancel first | `POST /api/v2/tokens/{assetId}/features/register-lines/preflights` |

The request and response fields of each route are in [the v2 API reference](https://docs.settlemint.com/docs/api-reference/v2).

A booking names either a requested `lineId` with its `registerReference`, or `from`, `to`, `amount` and `registerReference` for a direct booking, with an optional `corrects`. A zero address as `from` books a subscription, and a zero address as `to` books a redemption. The list filters by `state`, `kind`, `holder` and `corrects`. A list filtered by `holder` also returns that holder's balance, the units their open requests hold, and the units still available. A Supply management or Governance administrator lists and reads every movement of the token. Any other caller lists and reads only movements where one of their wallets gives, receives or opened the request, and gets not found for the rest.

The check route takes an `action` of `request`, `book`, `bookDirect` or `cancel` with the fields of the matching write and no wallet verification. It answers `{ "data": { "action", "clears": true } }` when the write would be accepted now, and the error of the write when it would not. The mint, burn and forced transfer check at `POST /api/v2/tokens/{assetId}/preflights` takes the same optional `registerReference` and `corrects` as those writes.

Each webhook event for a booked movement carries `registerLine` with `lineId`, `registerReference` and, for a correction, `correctsLineId`, so a reconciliation job can match it to the register entry. [Reconciliation](https://docs.settlemint.com/docs/concepts/records-and-evidence/reconciliation) covers that job. Composable Token explains how a feature such as Booked movements decides what a token can do, [Token features](https://docs.settlemint.com/docs/concepts/modeling-assets/token-features) covers the Hold and dividend yield features a mirror token uses, and [Booked movements](https://docs.settlemint.com/docs/concepts/records-and-evidence/booked-movements) describes the line model behind each movement.
