> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinecone.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Understand Pinecone cost

> Understand how Pinecone bills read units, write units, storage, egress, and embedding for full-text search, semantic search, and hybrid search.

Pinecone serverless is usage-based, so you pay for the data you store and the operations you run. Four metrics meter index usage: [read units](#read-units), [write units](#write-units), [storage](#storage), and [egress](#egress). [Imports](#imports), [backups](#backups-and-restores), [embedding](#embedding), and [reranking](#reranking) are billed on their own. Many small workloads fit within the free [Starter plan](https://www.pinecone.io/pricing/).

[Full-text search](https://docs.pinecone.io/guides/search/full-text-search.md) on a document index, semantic search on a legacy vector index, and [hybrid search](https://docs.pinecone.io/guides/search/hybrid-search.md) that combines the two are all metered by the same four metrics.

> [!TIP]
>
> This page explains how usage is measured. For current rates, see [Pricing](https://www.pinecone.io/pricing/). For ways to spend less, see [Save on Pinecone costs](https://docs.pinecone.io/guides/cost/save-on-costs.md).

## Minimum usage

The Builder, Standard, and Enterprise [pricing plans](https://www.pinecone.io/pricing/) include a monthly minimum usage commitment:

| Plan | Minimum usage |
| - | - |
| Starter | \$0/month |
| Builder | \$20/month (flat) |
| Standard | \$50/month |
| Enterprise | \$500/month |

On the Builder plan, the monthly minimum is a flat fee that covers included usage; additional usage beyond [Builder limits](https://docs.pinecone.io/reference/api/database-limits/rate-limits.md#monthly-usage-limits) is blocked rather than billed. On the Standard and Enterprise plans, customers are charged for what they use each month beyond the monthly minimum.

The minimum is a commitment you grow into rather than an extra charge. Once your usage exceeds the minimum, you pay only for what you use.

**Examples**

> [accordion] Usage below monthly minimum
>
> * You are on the Standard plan.
> * Your usage for the month of August amounts to \$20.
> * Your usage is below the \$50 monthly minimum, so your total for the month is \$50.
>
> In this case, the August invoice would include line items for each service you used (totaling \$20), plus a single line item covering the rest of the minimum usage commitment (\$30).

> [accordion] Usage exceeds monthly minimum
>
> * You are on the Standard plan.
> * Your usage for the month of August amounts to \$100.
> * Your usage exceeds the \$50 monthly minimum, so your total for the month is \$100.
>
> In this case, the August invoice would only show line items for each service you used (totaling \$100). Since your usage exceeds the minimum usage commitment, you are only charged for your actual usage and no additional minimum usage line item appears on your invoice.

## Prepaid credits

Pinecone offers an incentive for customers who purchase prepaid credits with an upfront payment. Customers may purchase between \$8,000 and \$25,000 in prepaid credits.

Customers who purchase prepaid credits can unlock additional usage capacity at no extra cost. The available benefits vary based on the selected plan and prepaid amount.

Prepaid credits apply to Pinecone services at List Price. Any usage that exceeds the available prepaid credits will be billed at full List Price.

Customers on Standard and Enterprise pay-as-you-go plans can purchase prepaid credits directly by navigating in the Pinecone console to [Settings > Billing > Plans](https://app.pinecone.io/organizations/-/settings/billing/plans).

> [!NOTE]
>
> Purchasing prepaid credits isn't available through cloud marketplace billing. To purchase prepaid credits through a cloud marketplace, contact [ar@pinecone.io](mailto:ar@pinecone.io).

## Read units

A read unit (RU) measures the compute, I/O, and network resources a read request uses. Pinecone bills these read requests in RUs:

* [Query](#query)
* [Fetch](#fetch)
* [List](#list)
* [Full-text search](#full-text-search)

> [!TIP]
>
> Read responses include the number of RUs used, which you can use to [monitor read costs](https://docs.pinecone.io/guides/cost/check-usage-per-request.md#read-units).

> [!NOTE]
>
> Indexes built on [Dedicated Read Nodes](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/overview.md) aren't subject to read unit limits for query, fetch, list, and full-text search operations. For sizing and capacity planning guidance, see the [Dedicated Read Nodes](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/overview.md) guide.

### Query

A query uses 1 RU for every 1 GB of namespace size, with a minimum of 0.25 RUs per query.

| Namespace size | Read units per query |
| :- | :- |
| \< 0.25 GB | 0.25 RUs (minimum) |
| 1 GB | 1 RU |
| 10 GB | 10 RUs |
| 50 GB | 50 RUs |
| 100 GB | 100 RUs |

To learn how to calculate your namespace size, see [Storage](#storage).

> [!NOTE]
>
> Parameters that affect the size of the query response, such as `top_k`, `include_metadata`, and `include_values`, don't affect query cost. Only the size of the namespace does.

### Fetch

A fetch request uses 1 RU for every 10 records fetched, for example:

| Fetched records | RUs |
| :- | :- |
| 10 | 1 |
| 50 | 5 |
| 107 | 11 |

Specifying a non-existent ID or adding the same ID more than once doesn't increase the number of RUs used. A fetch request always uses at least 1 RU.

> [!NOTE]
>
> [Fetching records by metadata](https://docs.pinecone.io/guides/legacy/vectors-api/fetch-vectors.md#fetch-records-by-metadata) uses the same cost model as fetching by ID: 1 RU for every 10 records fetched.

### List

A list request uses 1 RU and returns up to 100 IDs.

### Full-text search

Searching a [document index](https://docs.pinecone.io/guides/search/full-text-search.md) uses 1 RU for every 1 GB of namespace size, with a minimum of 0.25 RUs per search, the same as a [query](#query). This holds whether the request ranks by keyword relevance or by vector similarity.

A document index can declare `string` fields with `full_text_search` enabled and a `dense_vector` field in one schema, and each request ranks by one of them. So a [hybrid search](https://docs.pinecone.io/guides/search/hybrid-search.md) that narrows candidates with a [text-match filter](https://docs.pinecone.io/guides/search/filter-by-metadata.md#text-match-filters) and then ranks what remains with a `dense_vector` search is billed as one read request. Running a separate keyword search and dense search and merging the results client-side is billed as two.

## Write units

A write unit (WU) measures the storage and compute resources a write request uses. Pinecone bills these write requests in WUs:

* [Upsert](#upsert)
* [Update](#update)
* [Delete](#delete)

> [!NOTE]
>
> Writes to a [document index](https://docs.pinecone.io/guides/get-started/key-terms.md#document-index) use the same cost models as writes to a legacy vector index. The formulas below apply to both.

### Upsert

An upsert request uses 1 WU for each 1 KB of the request, with a minimum of 5 WUs per request. When an upsert modifies an existing record, the request also uses 1 WU for each 1 KB of the existing record.

The following table shows the WUs used by upsert requests at different batch sizes and record sizes, assuming all records are new:

| Records per batch | Dimension | Avg. metadata size | Avg. record size | WUs |
| :- | :- | :- | :- | :- |
| 1 | 768 | 100 bytes | 3.2 KB | 5 |
| 2 | 768 | 100 bytes | 3.2 KB | 7 |
| 10 | 1024 | 15,000 bytes | 19.10 KB | 191 |
| 100 | 768 | 500 bytes | 3.57 KB | 357 |
| 1,000 | 1536 | 1,000 bytes | 7.14 KB | 7,140 |

### Update

An update request uses 1 WU for each 1 KB of the new and existing record, with a minimum of 5 WUs per request.

The following table shows the WUs used by an update at different record sizes:

| New record size | Previous record size | WUs |
| :- | :- | :- |
| 6.24 KB | 6.50 KB | 13 |
| 19.10 KB | 15 KB | 25 |
| 3.57 KB | 5 KB | 9 |
| 7.14 KB | 10 KB | 18 |
| 3.17 KB | 3.17 KB | 7 |

> [!NOTE]
>
> [Updating records by metadata](https://docs.pinecone.io/guides/legacy/vectors-api/update-vectors.md#update-by-metadata) uses the same cost model as updating by ID: 1 WU for each 1 KB of the new and existing record.

### Delete

A delete request uses 1 WU for each 1 KB of records deleted, with a minimum of 5 WUs per request.

The following table shows the WUs used by delete requests at different batch sizes and record sizes:

| Records per batch | Dimension | Avg. metadata size | Avg. record size | WUs |
| :- | :- | :- | :- | :- |
| 1 | 768 | 100 bytes | 3.2 KB | 5 |
| 2 | 768 | 100 bytes | 3.2 KB | 7 |
| 10 | 1024 | 15,000 bytes | 19.10 KB | 191 |
| 100 | 768 | 500 bytes | 3.57 KB | 357 |
| 1,000 | 1536 | 1,000 bytes | 7.14 KB | 7,140 |

Specifying a non-existent ID or adding the same ID more than once doesn't increase WU use.

[Deleting a namespace](https://docs.pinecone.io/guides/data/manage-namespaces.md#delete-a-namespace) or [deleting all records in a namespace using `deleteAll`](https://docs.pinecone.io/guides/legacy/vectors-api/delete-vectors#delete-all-records-in-a-namespace) uses 5 WUs.

> [!NOTE]
>
> [Deleting records by metadata](https://docs.pinecone.io/guides/legacy/vectors-api/delete-vectors.md#delete-records-by-metadata) uses the same cost model as deleting by ID: 1 WU for each 1 KB of records deleted.

## Storage

Storage is billed monthly per gigabyte (GB) of index size. An index's size is the total size of its records or documents across all namespaces.

A document in a document index can include any combination of `string` fields with `full_text_search` enabled, a dense vector, and a sparse vector. A record in a legacy vector index can include a dense vector, a sparse vector, or both. Use the formula that matches your index to calculate total size:

> [tab] Document index
>
> A [document index](https://docs.pinecone.io/guides/indexes/index-data-overview.md#document-index) contains documents. Each document's size is its ID, its metadata, and the data in every schema field it holds.
>
> ```text Calculate size theme={null}
> Index size = Number of documents × (
>                ID size +
>                Metadata size +
>                Total full-text-search field size +
>                Dense vector dimensions × 4 bytes +
>                Number of non-zero sparse values × 8 bytes
>              )
> ```
>
> Where:
>
> * `ID size` and `Metadata size` are measured in bytes, averaged across all documents. Metadata is every field that isn't declared in the schema.
> * `Total full-text-search field size`: The combined UTF-8 byte length of the text in all `string` fields with `full_text_search` enabled, averaged across all documents. A `string` field with [integrated embedding](https://docs.pinecone.io/guides/indexes/index-data-overview.md#integrated-embedding) stores its text, which counts here, unless it sets `store_text: false`, in which case only its generated vector counts. If a field has both, count its text here and its generated vector below.
> * Each `Dense vector dimension` uses 4 bytes. Sum the dimensions of every dense vector in the document, whether you upsert it or Pinecone generates it for an integrated-embedding field. Omit this term if the schema has no dense vector.
> * `Number of non-zero sparse values`: Average number across all documents, including those without sparse vectors. Count every sparse vector in the document, whether you upsert it or Pinecone generates it. Each non-zero value uses 8 bytes. Omit this term if the schema has no sparse vector.
>
> These examples assume 8-byte IDs:
>
> | Documents | Avg total full-text-search field size | Dense vector dimensions | Avg number of non-zero sparse values | Avg metadata size | Index size |
> | :- | :- | :- | :- | :- | :- |
> | 500,000 | 2,000 bytes | None | None | 500 bytes | 1.25 GB |
> | 1,000,000 | 5,000 bytes | 1024 | None | 1,000 bytes | 10.1 GB |
> | 5,000,000 | 2,000 bytes | 768 | 100 | 500 bytes | 31.9 GB |
>
> > [!NOTE]
> >
> > Example: 1,000,000 documents × (8-byte ID + 5,000 bytes of full-text-search text + (1024 dense vector dimensions × 4 bytes) + 1,000 bytes of metadata) = 10.1 GB

> [tab] Index of dense vectors
>
> An [index of dense vectors](https://docs.pinecone.io/guides/indexes/index-data-overview.md#indexes-with-dense-vectors) contains records with one dense vector each.
>
> > [!NOTE]
> >
> > Records can also contain sparse vectors (when the index metric is set to `dotproduct`), which can be useful for [hybrid search](https://docs.pinecone.io/guides/legacy/vectors-api/hybrid-search-single-index.md). To learn how to calculate size in that case, see [Index with both dense and sparse vectors](#index-with-both-dense-and-sparse-vectors).
>
> ```text Calculate size (assuming no sparse vectors) theme={null}
> Index size = Number of records × (
>                ID size + 
>                Metadata size +
>                Dense vector dimensions × 4 bytes
>              )
> ```
>
> Where:
>
> * `ID size` and `Metadata size` are measured in bytes, averaged across all records.
> * Each `Dense vector dimension` uses 4 bytes.
>
> These examples assume 8-byte IDs:
>
> | Records | Dense vector dimensions | Avg metadata size | Index size |
> | :- | :- | :- | :- |
> | 500,000 | 768 | 500 bytes | 1.79 GB |
> | 1,000,000 | 1536 | 1,000 bytes | 7.15 GB |
> | 5,000,000 | 1024 | 15,000 bytes | 95.5 GB |
> | 10,000,000 | 1536 | 1,000 bytes | 71.5 GB |
>
> > [!NOTE]
> >
> > Example: 500,000 records × (8-byte ID + (768 dense vector dimensions × 4 bytes) + 500 bytes of metadata) = 1.79 GB

> [tab] Index of sparse vectors
>
> An [index of sparse vectors](https://docs.pinecone.io/guides/indexes/index-data-overview.md#indexes-with-sparse-vectors) contains records with one sparse vector each.
>
> ```text Calculate size theme={null}
> Index size = Number of records × (
>                ID size + 
>                Metadata size +
>                Number of non-zero sparse values × 8 bytes
>              )
> ```
>
> Where:
>
> * `ID size` and `Metadata size` are measured in bytes, averaged across all records.
> * `Number of non-zero sparse values`: Average number across all records. To find the count for a single record, check the length of the sparse vector's `indices` or `values` array. Each non-zero value uses 8 bytes.
>
> These examples assume 8-byte IDs:
>
> | Records | Avg number of non-zero sparse values | Avg metadata size | Index size |
> | :- | :- | :- | :- |
> | 500,000 | 10 | 500 bytes | 0.29 GB |
> | 1,000,000 | 50 | 1,000 bytes | 1.41 GB |
> | 5,000,000 | 100 | 15,000 bytes | 79.0 GB |
> | 10,000,000 | 50 | 1,000 bytes | 14.1 GB |
>
> > [!NOTE]
> >
> > Example: 500,000 records × (8-byte ID + (10 non-zero sparse values × 8 bytes) + 500 bytes of metadata) = 0.29 GB

> [tab] Index with both dense and sparse vectors
>
> An [index with both dense and sparse vectors](https://docs.pinecone.io/guides/legacy/vectors-api/hybrid-search-single-index.md) contains records that each have one dense vector and an optional sparse vector.
>
> ```text Calculate size theme={null}
> Index size = Number of records × (
>                ID size + 
>                Metadata size +
>                Dense vector dimensions × 4 bytes + 
>                Number of non-zero sparse values × 8 bytes
>              )
> ```
>
> Where:
>
> * `ID size` and `Metadata size` are measured in bytes, averaged across all records.
> * Each `Dense vector dimension` uses 4 bytes.
> * `Number of non-zero sparse values`: Average number across all records, including those without sparse vectors. To find the count for a single record, check the length of the sparse vector's `indices` or `values` array. Each non-zero value uses 8 bytes.
>
> These examples assume 8-byte IDs:
>
> | Records | Dense vector dimensions | Avg number of non-zero sparse values | Avg metadata size | Index size |
> | :- | :- | :- | :- | :- |
> | 500,000 | 768 | 10 | 500 bytes | 1.83 GB |
> | 1,000,000 | 1536 | 50 | 1,000 bytes | 7.54 GB |
> | 5,000,000 | 1024 | 100 | 15,000 bytes | 99.5 GB |
> | 10,000,000 | 1536 | 50 | 1,000 bytes | 75.4 GB |
>
> > [!NOTE]
> >
> > Example: 500,000 records × (8-byte ID + (768 dense vector dimensions × 4 bytes) + (10 non-zero sparse values × 8 bytes) + 500 bytes of metadata) = 1.83 GB

## Egress

Egress measures the data Pinecone returns to you on serverless reads. Egress is measured in GB of total response bytes returned by an in-scope read request, proportional to the record or document data returned (IDs, scores, vector values, text fields, and metadata).

Egress is metered on read requests that return per-record or per-document data:

* [Query](https://docs.pinecone.io/guides/legacy/vectors-api/query-vectors.md) on a legacy vector index
* [Fetch](https://docs.pinecone.io/guides/data/fetch-data.md) (records and documents, by ID and by metadata)
* [List](https://docs.pinecone.io/guides/data/list-record-ids.md) (record and document IDs)
* [Text search](https://docs.pinecone.io/guides/legacy/records-api/search-with-text.md) on a legacy integrated index
* Search on a document index, whether it ranks by [full-text search](https://docs.pinecone.io/guides/search/full-text-search.md) or by vector similarity

Write requests (upsert, update, delete, import), index statistics (such as `describe_index_stats`), and index management requests aren't metered for egress.

Egress applies to indexes that use [dedicated read nodes](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/overview.md) as well as on-demand indexes, because it depends on the data returned to you rather than on the hardware serving the read.

> [!NOTE]
>
> Egress accrues on all bytes returned by in-scope reads, including IDs, scores, and metadata. Leaving vector values out of a [query](https://docs.pinecone.io/guides/search/search-overview.md) response (`include_values=false`, the default) lowers egress, but it doesn't exempt the request, because IDs and scores are still returned. `fetch` always returns values, so use `query` when you're searching and only need IDs or metadata.

### Egress allowance

Each plan includes a monthly egress allowance, which resets at the start of each billing period:

| Plan | Monthly egress allowance |
| :- | :- |
| Starter | 1 GB |
| Builder | 10 GB |
| Standard | 100 GB |
| Enterprise | 100 GB |

What happens past the allowance depends on your plan:

* **Usage-based plans (Standard, Enterprise)**: Egress beyond the allowance is billed at the per-GB overage rate and reads keep serving.
* **Flat-fee plans (Starter, Builder)**: In-scope reads are blocked with a `RESOURCE_EXHAUSTED` (429) error and an upgrade prompt once the allowance is reached. Index statistics, index management, and write requests remain available, and the allowance resets at the start of the next billing period.

## Imports

[Importing from object storage](https://docs.pinecone.io/guides/data/import-data.md) is the most cost-effective way to load large numbers of records into an index. An import is billed by the size of the records it reads, whether or not they import successfully.

If the import fails (e.g., after it reads a vector of the wrong dimension in an import with `on_error="abort"`), you're still charged for the records read. If the import fails because of an internal system error, you aren't charged, and the import returns the error message `"We were unable to process your request. If the problem persists, please contact us at https://support.pinecone.io"`.

## Backups and restores

A [backup](https://docs.pinecone.io/guides/indexes/backups-overview.md) is a static copy of a serverless index. Storing a backup and [restoring an index](https://docs.pinecone.io/guides/indexes/restore-an-index.md) from a backup are both billed by the size of the index.

[Restoring a backup into a different region](https://docs.pinecone.io/guides/indexes/restore-an-index.md#restore-to-a-different-region) also incurs a cross-region transfer fee, charged per GB on top of the restore cost. The rate depends on the cloud provider and the backup's region. Restoring into the same region as the backup doesn't incur this fee. On your invoice, the fee appears as **Serverless Cross-Region Transfer**.

## Embedding

Pinecone hosts several [embedding models](https://docs.pinecone.io/guides/indexes/index-configuration.md#embedding-models). You can embed your data as an integrated part of upserting and querying, or as a standalone operation.

Embedding is billed by the number of [tokens](https://www.pinecone.io/learn/tokenization/) in a request. The more words in your passage or query, the more tokens it generates.

For example, if you generate embeddings for the query, "What is the maximum diameter of a red pine?", Pinecone generates 10 tokens, then converts them into an embedding. If your plan's rate is \$0.08 per million tokens, this call costs \$0.0000008.

To learn more about tokenization, see [Choosing an embedding model](https://www.pinecone.io/learn/series/rag/embedding-models-rundown/).

> [!TIP]
>
> Embedding requests return the total tokens generated. You can use this information to [monitor and manage embedding costs](https://docs.pinecone.io/guides/cost/check-usage-per-request.md#embedding-tokens).

## Reranking

Pinecone hosts several [reranking models](https://docs.pinecone.io/guides/search/rerank-results.md#reranking-models). You can rerank results as an integrated part of a query, or as a standalone operation.

Reranking is billed by the number of requests to the reranking model.

## Assistant

For details on how costs are incurred in Pinecone Assistant, see [Assistant pricing](https://docs.pinecone.io/guides/assistant/pricing-and-limits.md).

## HIPAA compliance add-on

Full HIPAA compliance is included with the [Enterprise plan](https://www.pinecone.io/pricing/). On the Enterprise plan or with the add-on, HIPAA compliance requires you to [configure audit logs](https://docs.pinecone.io/admin/security/configure-audit-logs.md).

On the Standard plan, HIPAA compliance is available as an optional add-on for \$190 per month. The add-on is billed monthly and added to your regular invoice. A 6-month minimum period is required.

The HIPAA compliance add-on includes:

* HIPAA-ready infrastructure
* Encrypted data storage
* Audit logging
* Enhanced security controls
* BAA execution and compliance documentation support

> [!NOTE]
>
> If you upgrade to the Enterprise plan, the HIPAA compliance add-on is automatically removed because HIPAA compliance is included with Enterprise.

### Enable the HIPAA compliance add-on

To enable the HIPAA compliance add-on, [submit a HIPAA request](https://www.pinecone.io/contact/hipaa/). The Pinecone team reviews your request and guides you through activation.

## See also

* [Save on Pinecone costs](https://docs.pinecone.io/guides/cost/save-on-costs.md)
* [Check usage per request](https://docs.pinecone.io/guides/cost/check-usage-per-request.md)
* [Download a usage report](https://docs.pinecone.io/admin/billing/download-usage-report.md)
* [Pricing](https://www.pinecone.io/pricing/)
