--- title: "How do I load market prices into the Quote Store?" slug: "how-do-i-upload-a-market-price-or-fx-spot-rate-to-the-quote-store" updated: 2026-05-07T11:06:43Z published: 2026-05-07T11:06:43Z canonical: "support.lusid.com/how-do-i-upload-a-market-price-or-fx-spot-rate-to-the-quote-store" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.lusid.com/llms.txt > Use this file to discover all available pages before exploring further. # How do I load market prices into the Quote Store? You can load a quote representing a stock market price for a particular instrument on a given day, for example $287.46 for APPL on 6 May 2026. Note the following: - Market prices are required items of market data when [valuing](/v1/docs/valuations) most supported instruments. - Choices you make when uploading market data impact the composition of the [recipe](/v1/docs/what-is-a-recipe) you must create in order to use that data. **See also**: [FX spot rates](/v1/docs/how-do-i-upload-a-market-price-or-fx-spot-rate-to-the-quote-store) | [Inflation fixings](/v1/docs/how-do-i-upload-an-inflation-fixing-to-the-lusid-quote-store) | [Interest rate fixings](/v1/docs/how-do-i-load-an-interest-rate-fixing-into-the-lusid-quote-store) ## Methods LUSID web appLUSID APILuminesce Call the [UpsertQuotes](https://www.lusid.com/docs/api#operation/UpsertQuotes) API to load up to 2000 quotes in a single request. You must: - Encapsulate all the quotes in a single `scope` (namespace) in the URL. - For each quote, specify an ephemeral ID (to track errors in the response). ```json curl -X POST "https://.lusid.com/api/api/quotes/MyAPPLPrices"  -H "Authorization: Bearer "  -H "Content-Type: application/json-patch+json"  -d '{  "Quote-0001": {    "quoteId": {      "quoteSeriesId": {        "provider": "Bloomberg",        "instrumentIdType": "LusidInstrumentId",        "instrumentId": "LUID_00003D58",        "quoteType": "Price",        "field": "mid"      },      "effectiveAt": "2026-05-06T00:00:00Z"    },    "metricValue": {      "value": 287.46, "unit": "USD"    }  },  "Quote-0002": {    "quoteId": {      "quoteSeriesId": {        "provider": "Bloomberg",        "instrumentIdType": "LusidInstrumentId",        "instrumentId": "LUID_00003D58",        "quoteType": "Price",        "field": "mid"      },      "effectiveAt": "2026-05-05T00:00:00Z"    },    "metricValue": {      "value": 276.93, "unit": "USD"    }  } }' ``` Navigate to **Data Management > Quotes** and click the **Create quote** button: ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image-4BQ6G0Z1.png?sv=2026-02-06&spr=https&st=2026-11-04T02%3A01%3A03Z&se=2026-11-04T03%3A01%3A03Z&sr=c&sp=r&sig=UuiZcdy6dD%2F23NgLsXOlajfDPrM%2FxAAPKbtDTaTa6Ew%3D) Write a Luminesce SQL query using the [Lusid.Instrument.Quote.Writer](/v1/docs/lusidinstrumentquotewriter) provider and execute it using a tool such as the LUSID web app: ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image-EGYCIH4Q.png?sv=2026-02-06&spr=https&st=2026-11-04T02%3A01%3A03Z&se=2026-11-04T03%3A01%3A03Z&sr=c&sp=r&sig=UuiZcdy6dD%2F23NgLsXOlajfDPrM%2FxAAPKbtDTaTa6Ew%3D) ## Data fields This section supplements the [API documentation](https://www.lusid.com/docs/api/lusid/endpoints/quotes/UpsertQuotes/) and on-screen help text in the LUSID web app. | Mandatory field or parameter | Allowed values | Must be matched in recipe? | | --- | --- | --- | | `scope` | Any, for example `MyAPPLPrices` | ✅ [dataScope field](/v1/docs/recipes-locating-market-data#summary-of-fields-in-a-market-data-rule) | | `provider` | [Any valid](/v1/docs/understanding-valid-market-data-provider-and-field-combinations) | ✅ [supplier field](/v1/docs/recipes-locating-market-data#summary-of-fields-in-a-market-data-rule) | | `field` | [Any valid for provider](/v1/docs/understanding-valid-market-data-provider-and-field-combinations) | ✅ [field field](/v1/docs/recipes-locating-market-data#summary-of-fields-in-a-market-data-rule) | | `instrumentIdType` | Your choice of `LusidInstrumentId`, `Figi`, `RIC`, `QuotePermId`, `Isin`, `Sedol`, `Cusip`, `ClientInternal` | ✅ [key field](/v1/docs/recipes-locating-market-data#more-information-on-the-key-field), for example `Quote.LusidInstrumentId.LUID_00003D58` or `Quote.RIC.*` | | `instrumentId` | Must match a value suitable for the chosen [instrument identifier](/v1/docs/understanding-instrument-identifiers), for example `LUID_00003D58` for `LusidInstrumentId` | | `quoteType` | `Price` for a clean price, or `DirtyPrice` | ✅ [quoteType field](/v1/docs/recipes-locating-market-data#summary-of-fields-in-a-market-data-rule) | | `effectiveAt` | A UTC datetime, or date and [cut label](/v1/docs/what-is-a-cut-label) | ❌ [but must be within quoteInterval](/v1/docs/recipes-locating-market-data#more-information-on-the-quoteinterval-field) | | `metricValue.value` | The quoted price, for example `287.46` | ❌ | | `metricValue.unit` | The quoted currency, for example `USD` | ❌ | The following fields are optional: - A `priceSource` indicating a sub-supplier to the `provider`, for example Tradeweb or RRPS for Refinitiv DataScope. [**Match this using the priceSource field in a recipe**](/v1/docs/recipes-locating-market-data#summary-of-fields-in-a-market-data-rule). Note that if omitted, your recipe must also omit its `priceSource` field. - A `lineage` providing additional information. - A `scaleFactor` to scale down the price, for example a bond price that is expressed as a percentage of par. Note it may be more efficient to scale down at the instrument level instead. [More information](/v1/docs/scaling-a-market-price). ## Subsequent updates You can change the `metricValue` of an existing quote. Any other update constitutes a new quote in the time series.