# A Binding Quote

> Coming soon, upon request — this feature is turned on for your tenant by the Aurea team. [Contact us](https://www.aureahub.com/contact)

A quote that holds until it expires, kept by Aurea for the execution of the order.

## Overview

- The same request as an [indicative quote](https://docs.aureahub.com/docs/tok-quote-indicative.md), and the same terms answered, with `quoteId`, `status` `attested` and `expiresAt`. The quote's signature is kept by Aurea and never answered: execute it with [Execute a Quote](https://docs.aureahub.com/docs/tok-quote-execute.md) before `expiresAt`. How long a quote holds depends on your tenant's setting (short or long, [Setting Up](https://docs.aureahub.com/docs/guide-tokenized-assets.md)); a wallet its owner signs for needs a long one.
- Only for a user who meets every requirement ([Requirements](https://docs.aureahub.com/docs/tok-requirements.md)): `403` with the refusal's own code, or `TOKENIZED_ASSETS_ELIGIBILITY_INCOMPLETE` with `details.missing`.
- For the user's own wallet that will hold the tokens, registered for trading on that chain by Aurea (`409` `TOKENIZED_ASSETS_WALLET_NOT_REGISTERED` otherwise).
- Within your tenant's trading hours: a tenant that trades in the regular session only gets `409` `TOKENIZED_ASSETS_AFTER_HOURS_OFF` outside it. Within the market's limits and your tenant's ([Trading Limits](https://docs.aureahub.com/docs/tok-limits.md)): `409` `TOKENIZED_ASSETS_LIMIT_REACHED` with `maxValueUsd` or `maxTokenAmount`, `TOKENIZED_ASSETS_TOO_MANY_OPEN_QUOTES`, or `TOKENIZED_ASSETS_TENANT_LIMIT_EXCEEDED` with `details.limit` (`order`, `asset_order` or `user_daily`), `maxUsd` and `requestedUsd`. The fee does not count against a limit.
- 10 a minute. User token and the tenant signature ([Calling the Routes](https://docs.aureahub.com/docs/guide-tokenized-assets.md)); for `user`, `owner`, `tenantadmin` and `signer`, for themselves (another role: `403`).

## Errors

Besides [the answers every tokenized assets route can give](https://docs.aureahub.com/docs/guide-tokenized-assets.md) (no valid token or signature, the module not set up or not switched on, a field that does not fit):

| Status | details.code | When |
| --- | --- | --- |
| 403 | — | The caller's role may not call it (`Your role does not have permission to perform this action.`). |
| 404 | TOKENIZED_ASSETS_ASSET_NOT_OFFERED | Your tenant does not offer this symbol in this environment (`This tenant does not offer this asset.`). |
| 409 | TOKENIZED_ASSETS_NOT_SUPPORTED_FOR_ASSET | An asset the issuer issues and redeems directly, not traded with quotes (`Quotes are not available for this asset yet.`). |
| 409 | TOKENIZED_ASSETS_MULTIPLIER_UPDATE | Such an asset within its multiplier's adjustment window (`details.until`). |
| 400 | TOKENIZED_ASSETS_QUOTE_NOT_SUPPORTED | The settlement token or the yield token: not traded with quotes (`This asset is not traded with quotes.`). |
| 400 | TOKENIZED_ASSETS_CHAIN_UNSUPPORTED | The asset has no token on `chainId` (`This asset has no token on this chain.`). |
| 400 | TOKENIZED_ASSETS_PAYMENT_TOKEN_UNSUPPORTED | `paymentToken` is not taken for this asset on this chain (`This asset is paid in USDC or USDon on this chain.`, with `details.accepted`). |
| 409 | TOKENIZED_ASSETS_ASSET_PAUSED | The asset is paused on this chain ([Corporate Actions](https://docs.aureahub.com/docs/tok-asset-corporate-actions.md)). |
| 400 | TOKENIZED_ASSETS_INVALID_AMOUNT | `Give exactly one of tokenAmount and notionalValue`; `an amount is a decimal number written with digits and at most one point`; `an amount is too large`; `an amount has at most 18 digits after the point`; `The amount must be above zero`. |
| 403 | TOKENIZED_ASSETS_COUNTRY_EXCLUDED | `Tokenized assets are not offered to residents of the user's country or region.` (`details.reason`). |
| 403 | TOKENIZED_ASSETS_US_PERSON | `Tokenized assets are not offered to US persons.` |
| 403 | TOKENIZED_ASSETS_NOT_APPROPRIATE | `The appropriateness test found these assets not appropriate for the user.` |
| 403 | TOKENIZED_ASSETS_PROFESSIONAL_ONLY | `This asset is offered to professional clients only.` (`details.reason`). |
| 403 | TOKENIZED_ASSETS_ELIGIBILITY_INCOMPLETE | `A requirement for a binding quote is missing: see details.missing.` |
| 409 | TOKENIZED_ASSETS_WALLET_NOT_REGISTERED | `The wallet that would hold the tokens is not registered for trading.` (`details.chainId`). |
| 409 | TOKENIZED_ASSETS_AFTER_HOURS_OFF | `Binding quotes are given in the regular session only.` (`details.session`). |
| 409 | TOKENIZED_ASSETS_LIMIT_REACHED | Above the market's largest order now (`details.maxValueUsd` or `details.maxTokenAmount`). |
| 409 | TOKENIZED_ASSETS_TOO_MANY_OPEN_QUOTES | `Too many quotes are open: wait for one to be used or to expire.` |
| 409 | TOKENIZED_ASSETS_TENANT_LIMIT_EXCEEDED | `The order is above the tenant's limit per order.`, `… the tenant's limit per order of this asset.` or `… the tenant's limit per user over 24 hours.`, with `details.limit` (`order`, `asset_order`, `user_daily`), `maxUsd` and `requestedUsd`. |
| 409 | TOKENIZED_ASSETS_WALLET_ACCOUNT_MISMATCH | The quote was signed for another account than the wallet's; it is kept as `failed` (`details.quoteId`). |
| 409 | TOKENIZED_ASSETS_… | The market says no ([Provider Errors](https://docs.aureahub.com/docs/guide-tokenized-assets.md)): `MARKET_CLOSED`, `MARKET_PAUSED`, `ASSET_PAUSED`, `ASSET_LIMITED`, `ASSET_CLOSED_FOR_SESSION`, `ASSET_SELL_ONLY`, `INSUFFICIENT_LIQUIDITY`, `SESSION_LIMIT_REACHED`, `AFTER_HOURS_LIMIT_REACHED`, `CHAIN_PAUSED`; `400` `…_ORDER_TOO_SMALL`, `…_INVALID_REQUEST`. |
| 503 | TOKENIZED_ASSETS_PROVIDER_… | The market could not be read or answered unexpectedly ([Provider Errors](https://docs.aureahub.com/docs/guide-tokenized-assets.md)); `TOKENIZED_ASSETS_PROVIDER_READ_ONLY_KEY` when your tenant's provider access can read but not quote (`Binding quotes are not available for this tenant at the moment.`). |

## Endpoint

### `POST /v1/tokenized-assets/quotes`

Authentication: bearer token required.

A quote that holds until expiresAt, for the execution of the order.

**Request body**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `isTestnet` | boolean | no | `true` for the test environment; `false` (the default) for production. |
| `symbol` | string | yes | The token's symbol, as its contract names it (case matters). Pattern `^[A-Za-z0-9.-]{1,32}$`. |
| `chainId` | number | yes | The chain: 1 (Ethereum) or 56 (BNB Chain). One of `1`, `56`. |
| `side` | string | yes | One of `buy`, `sell`. |
| `tokenAmount` | string | no | How many tokens, as a decimal of at most 18 digits after the point. Give this or notionalValue. At most 80 characters. |
| `notionalValue` | string | no | How many US dollars, as a decimal of at most 18 digits after the point. Give this or tokenAmount. At most 80 characters. |
| `paymentToken` | string | no | What the buy is paid in, or the sale paid out in: on chain 1 USDC (the default) or USDon, on chain 56 USDT (the default) or USDon; a portfolio in USDC or USDT only. One of `USDC`, `USDT`, `USDon`. |

**Responses**

`201` Attested

```json
{
  "symbol": "AAPLon",
  "chainId": 1,
  "side": "buy",
  "tokenAmount": "2",
  "price": "254.31",
  "value": "508.62",
  "paymentToken": "USDC",
  "paymentAmount": "508.62",
  "fee": {
    "bps": 50,
    "amount": "2.5431"
  },
  "total": "511.1631",
  "isTestnet": false,
  "quoteId": "8b1e4f23-6c0a-4d7e-9f35-2a8c1b7e6d40",
  "binding": true,
  "status": "attested",
  "failureCode": null,
  "expiresAt": "2026-10-07T15:08:02.000Z",
  "createdAt": "2026-10-07T15:03:02.000Z"
}
```

`403` Missing Requirements

```json
{
  "statusCode": 403,
  "error": "ForbiddenError",
  "message": "A requirement for a binding quote is missing: see details.missing.",
  "details": {
    "code": "TOKENIZED_ASSETS_ELIGIBILITY_INCOMPLETE",
    "symbol": "AAPLon",
    "missing": [
      "appropriateness",
      "acceptance:kid"
    ]
  }
}
```

`409` Tenant Limit

```json
{
  "statusCode": 409,
  "error": "ConflictError",
  "message": "The order is above the tenant's limit per user over 24 hours.",
  "details": {
    "code": "TOKENIZED_ASSETS_TENANT_LIMIT_EXCEEDED",
    "limit": "user_daily",
    "maxUsd": "25000",
    "requestedUsd": "508.62"
  }
}
```

[Contact us for details](https://www.aureahub.com/contact).

---

Web version: https://docs.aureahub.com/#tok-quote-create
