---
title: "Loading data into LUSID"
slug: "loading-data-into-lusid"
status: "update"
updated: 2026-02-06T14:10:04Z
published: 2026-02-06T14:10:23Z
canonical: "support.lusid.com/loading-data-into-lusid"
---

> ## 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.

# Loading data into LUSID

There are several ways to load data into LUSID's numerous [storage options](/v1/docs/lusid-data-storage-options). Some are more suited to bulk loading data than others.

> **Note:** When you load data into LUSID there may be a small propagation delay before it can be retrieved *unless* you specify the recorded `asAt` datetime of the upsert operation when you make a `List*` API call (or equivalent).

## LUSID REST API

The [LUSID REST API](/v1/docs/getting-started-with-the-lusid-rest-api-and-sdks) has an *upsert* model for [entities](/v1/docs/what-is-an-entity). For example, the `UpsertTransactions` API:

- Updates an existing transaction if it exists, or
- Creates a new one if it does not.

LUSID does not generally have separate *update* and *insert* APIs.

Note that the REST API has restrictions on:

- The number of entities you can upsert per API call. You must batch calls if you need to upsert more than an endpoint's maximum:

| **Upsert API** | **Maximum # entities per call** |
| --- | --- |
| [BatchUpsertTransactions](https://www.lusid.com/docs/api#operation/BatchUpsertTransactions), [UpsertTransactions](https://www.lusid.com/docs/api#operation/UpsertTransactions), [BatchUpsertCorporateActions](https://www.lusid.com/docs/api#operation/BatchUpsertCorporateActions), [UpsertInstrumentEvents](https://www.lusid.com/docs/api#operation/UpsertInstrumentEvents) | 10,000 |
| [UpsertInstruments](https://www.lusid.com/docs/api/#operation/UpsertInstruments), [UpsertQuotes](https://www.lusid.com/docs/api/#operation/UpsertQuotes), [UpsertComplexMarketData](https://www.lusid.com/docs/api/#operation/UpsertComplexMarketData), [UpsertLegalEntities](https://www.lusid.com/docs/api/#operation/UpsertLegalEntities), [UpsertCustodianAccounts](https://www.lusid.com/docs/api#operation/UpsertCustodianAccounts), [UpsertCustomEntities](https://www.lusid.com/docs/api#operation/UpsertCustomEntities) | 2,000 |
| All other upsert APIs | 1 |
- The [quality](/v1/docs/lusid-api-requests-character-limits-and-allowed-values) and [quantity](/v1/docs/lusid-api-requests-character-limits-and-allowed-values#data-limits-for-lists-of-values) of data you can supply for entity fields.
- The size of the payload. By default, this is 50MB per API call.
- The number of API calls you can make in total per minute. By default, you are rate-limited to 1000 API calls per 60 second window.

The alternatives to the REST API below might be better suited to bulk loading data into LUSID.

## LUSID SDK

The [LUSID SDK](/v1/docs/understanding-all-the-applications-in-the-finbourne-platform) is available in 5 programming languages and frameworks (Python, C#, Java, JavaScript and Angular) and provides a convenient wrapper around the REST API.

You may prefer to use an SDK over Luminesce (see below) if your environment is suited to manipulating data using one of the languages/frameworks listed above rather than SQL.

## LUSID Python Tools

[LUSID Python Tools](https://github.com/finbourne/lusid-python-tools) (LPT) is a wrapper around the LUSID Python SDK (above), with tooling for loading of Pandas DataFrames, CSV files and Excel files.

Reasons to prefer using LPT over the LUSID Python SDK to bulk load data include:

- Your preferred language for manipulating data is Python.
- LPT handles batching automatically.
- LPT makes asynchronous calls to improve performance.
- LPT streamlines the process of creating properties for entities if they do not already exist.

## Luminesce

[Luminesce](/v1/docs/introduction-to-luminesce) is LUSID's data virtualisation engine and is optimised for bulk loading data in the following formats and storage locations into LUSID:

- CSV, Excel, SQLite, XML, Parquet and plain text files stored in Drive, LUSID's file repository and manager. [More information](/v1/docs/using-luminesce-to-readwrite-drive-files).
- Relational data stored in MySql, Odbc, Oracle, PostgreSql, SqLite, SqlServer, GoogleBigQuery, Db2 or AwsAthena SQL-compatible databases. [More information](/v1/docs/using-sysadminsetupview-to-create-custom-views).
- CSV, Excel, SQLite, XML, Parquet and plain text files stored locally, in a NAS or similar device. [More information](/v1/docs/using-luminesce-to-readwrite-local-files-nas).
- CSV, Excel, SQLite, XML, Parquet and plain text files hosted on a SFTP server. [More information](/v1/docs/using-luminesce-to-readwrite-sftp-server-files).
- CSV, Excel, SQLite, XML, Parquet and plain text files stored in Google Cloud Storage. [More information](/v1/docs/readwrite-files-to-google-cloud-services-gcsx).
- CSV, Excel, SQLite, XML, Parquet and plain text files stored in AWS S3. *More information coming soon*.
- CSV, Excel, SQLite, XML, Parquet and plain text files stored in Azure. *More information coming soon*.
- Snowflake. *More information coming soon*.

Reasons to use Luminesce include:

- Your data exists in the storage locations and data formats listed above.
- Your preferred language for manipulating data is SQL.
- Your payloads exceed 50MB.
- Luminesce handles batching automatically.

For a demonstration of Luminesce please reach out to your FINBOURNE representative.

## Partnerships and integrations

FINBOURNE has a [partnership program](/v1/docs/introduction-to-partnerships-and-integrations) for industry-leading data vendors and service providers. It consists of utilities optimised for the bulk loading of *subscription* data into LUSID.

## LUSID web app

The [LUSID web app](https://www.lusid.com/app/home) is a graphical user interface that provides a simplified way to load and interact with your data in LUSID.

You can use the **Import Data** dashboard to download an Excel or CSV template for the type of data you want to load into LUSID, populate it with your data, and upload it to LUSID. [More information.](/v1/docs/importing-data-using-the-lusid-web-app)

You can also use the LUSID web app to create or update entities on an ad hoc basis, for example to [create a transaction portfolio](/v1/docs/how-do-i-create-a-transaction-portfolio).
