Billing

PlanetScale pricing was designed for transparency and scalability.

Overview

PlanetScale offers three different plan types:

  • Usage-based — based on the rows read and written by the database.
  • Resource-based — billed at a fixed rate depending on your cluster size.
  • Enterprise — custom built solutions based on the needs of your business.

PlanetScale applies billing plans at the database level. You can create several databases under one Organization. The usage charges will be scoped to each database, which you can find all together in the billing section of your Organization. Each plan is further broken down in the following sections.

Note

We used gibibytes, otherwise known as binary gigabytes, to calculate storage and usage limits. For reference, 1 binary gigabyte is equivalent to 2^30 bytes.

Payment methods

You can add a debit or credit card to your PlanetScale organization to pay your invoices, but we do not accept pre-paid cards.

Usage-based plans

PlanetScale provides two usage-based plans: Hobby and Scaler. These plans are charged on three factors:

  • Reads: Retrieving or inspecting rows during a query or mutation of any kind to your PlanetScale databases.
  • Writes: Adding new information or changing existing information in your PlanetScale databases.
  • Storage: Data saved in the form of tables, columns, rows, and their corresponding relationships.

See the "Understanding rows read" section for a more in-depth look at the rows read calculation.

Note

In order to prevent fraud, PlanetScale requires a valid payment method to create databases on the Hobby (free) tier. You will not be charged unless you create a Scaler or Scaler Pro database.

Some limitations apply to the free tier. See below for more information.

The usage-based plans are summarized below:

HobbyScaler
Storage/month5 GB10 GB*
Row reads/month1 billion100 billion*
Row writes/month10 million50 million*
Available cluster sizes11
Availability zones11
Production branches1 per database2 per database
Development branches1 per database5 per database
Concurrent connections1,00010,000
Query Insights retention24 hours7 days
Horizontal shardingNot includedNot included
Deployment optionsMulti-tenantMulti-tenant
Read only regionsNot includedIncluded
Web consoleIncludedIncluded
PlanetScale CLIIncludedIncluded
SSONot includedAvailable as an add-on
Audit log retention5 days15 days
Automatic backupsDailyEvery 12 hours
SupportCommunityStandard
Data Branching®Not includedNot included
Monthly cost$0$29 per database
PlanetScale BoostNot includedAvailable as an add-on

* For the Scaler plan:

  • Extra storage over the included amount is billed at $2.50 per additional 1 GB
  • Extra rows read over the included amount are billed at $1 per additional 1 billion
  • Extra rows written over the included amount are billed at $1.50 per additional 1 million.
Note

You are limited to one free database per organization. Free databases may be slept after a 7-day period of inactivity.

The Scaler plan is billed on a monthly basis.

Plan add-ons

Development branch packs

You can add additional development branches to Scaler plans in packs of 5 for an extra $25/mo per pack.

To add a branch pack to a database:

  1. Select the database you want to add branches to
  2. Click on the "Settings" tab in the top nav
  3. Click "Add-ons" from the side nav
  4. Select the number of branch packs you'd like to add
  5. Click "Save".

Single Sign-on (SSO)

You can add SSO for your organization under the Scaler and Scaler Pro plans for an additional fee. Please contact us to enable SSO.

On our pricing page, you can find additional information about each plan's offerings, as well as a calculator to help you decide what plan is right for you.

Understanding rows read

It can be difficult to decipher what counts as a row read. Nobody wants to run a seemingly simple query only to be hit with an unexpected bill. This section will attempt to break down what goes into the rows read calculation and how you can test your queries to estimate the potential rows read before running them.

Rows read is a measure of the work that the database engine does, not a measure of the number of rows returned. Every row read from a table during execution adds to the rows read count, regardless of how many rows are returned. For this reason, it's important to optimize and index your queries.

Caveats

While, in most cases, the work done is a direct reflection of the number of rows read, there are some caveats.

The SELECT count(*) query is a special case. The database engine optimizes this query and doesn't read row data itself to return a count, so this doesn't actually increment rows read. In other words, if you run the query SELECT count(*) on a table with 10m rows, your rows read will be 0.

Testing queries for rows read

With our in-dashboard Insights tool, you can explore active queries running against your database. The "Queries during the last 24 hours" list has a column that shows the total rows read for that particular query. The "rows read" surfaced here is the same number we use to calculate your total rows read for your billing calculation. In addition, you can click on a particular query to see more information about its performance.

PlanetScale Insights recent queries list

If you'd prefer to test a query on your own, you can calculate the approximate rows read using the EXPLAIN statement. Running EXPLAIN with your query will return information about the query execution plan.

For example, if you want to estimate how many rows will be read from a SELECT, you could run:

SQL
EXPLAIN SELECT * from posts;

This table has 15 rows. All of them are read, which is reflected in the rows output returned:

+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
| 1 | SIMPLE | posts | NULL | ALL | NULL | NULL | NULL | NULL | 15 | 100.00 | NULL |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+

It's important to remember the rows read returned with EXPLAIN will not always be the exact number of actual rows read, as it is just an estimation. You should not rely on this as an accurate way to determine billing ahead of time but rather as a starting point to see the potential impact of queries. It can be a great starting point for optimization.

To see the exact rows read, you will need to run the query. You can use the EXPLAIN ANALYZE statement to do this. It will return the estimated information about how it will run the query, run the query, and then return the actual impact of running the query.

SQL
EXPLAIN ANALYZE select * from posts

In this case, the estimated count shown in the first set of parentheses does match the actual count. But again, this will not always be the case.

+-------------------------------------------------------------------------------------------+
| EXPLAIN |
+-------------------------------------------------------------------------------------------+
| -> Table scan on posts (cost=1.75 rows=15) (actual time=0.024..0.038 rows=15 loops=1) |
| |
+-------------------------------------------------------------------------------------------+

Checking rows read

Another useful way to check rows read is using innodb_rows_read. This server status variable will show you the number of rows read across all tables. You can run it before and after queries to calculate how many rows were read. Keep in mind, if you have an active running database, this number may not be an accurate reflection of single query impact, as you may have other queries running in the background that affect the rows read.

SQL
SHOW GLOBAL STATUS LIKE 'Innodb_rows_read';

This returned output indicates that 4586 total rows have been read.

+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Innodb_rows_read | 4586 |
+------------------+-------+

Resource-based plans

The Scaler Pro plan is charged based on the selected cluster size, plus the cost of storage. There are currently 7 different cluster sizes available. The cost for these varies by the database's selected region.

ProcessorMemory
PS-101/8 vCPU1 GB RAM
PS-201/4 vCPU2 GB RAM
PS-401/2 vCPU4 GB RAM
PS-801 vCPU8 GB RAM
PS-1602 vCPU16 GB RAM
PS-3204 vCPU32 GB RAM
PS-4008 vCPU32 GB RAM

All Scaler Pro plans, regardless of cluster size, share the following features:

Scaler Pro
Storage/month10 GB*
Row reads/monthUnlimited
Row writes/monthUnlimited
Available cluster sizes7
Availability zones3
Production branches1 included**
Development branches2 included**
Concurrent Connections10,000
Query Insights retention7 days
Horizontal shardingNot included
Deployment optionsMulti-tenant
Read only regionsIncluded
Web consoleIncluded
PlanetScale CLIIncluded
SSOAvailable as an add-on***
Audit log retention15 days
Automatic backupsEvery 12 hours
SupportStandard, upgrade available***
Data Branching®Included
PlanetScale BoostAvailable as an add-on

* For the Scaler Pro plan, any storage over the included amount is billed at $1.50 per additional 1 GB. ** Additional production branches are billed at the cost of your selected cluster size per month, additional development branches are billed at $10.00 per branch per month. *** SSO and Business support options are available on the Scaler Pro plan for an additional fee.

Single Sign-on (SSO)

You can add SSO for your organization under the Scaler Pro plan for an additional fee. Please contact us to enable SSO.

On our pricing page, you can find additional information about each plan's offerings, as well as a calculator to help you decide what plan is right for you.

Enterprise plan

The Enterprise plan is fully customizable to suit your businesses needs. For more information about our Enterprise plan, please reach out to us.

Enterprise
Storage/monthConfigurable
Row reads/monthConfigurable
Row writes/monthConfigurable
Available cluster sizes18+
Availability zones3+
Production branchesConfigurable
Development branchesConfigurable
Concurrent ConnectionsUnlimited
Query Insights retentionConfigurable
Horizontal shardingConfigurable
Deployment optionsMulti-tenant, Single-tenant, and Managed
Read only regionsIncluded
Web consoleIncluded
PlanetScale CLIIncluded
SSOIncluded
Audit log retentionConfigurable
Automated BackupsConfigurable
SupportBusiness, upgrade available*
Data Branching®Included
PlanetScale BoostAvailable as an add-on
Monthly costCustom

* Enterprise support is available on the Enterprise plan for an additional fee.

User scheduled backups

We run automatic daily backups for every branch for free. On the Scaler and Scaler Pro plans, we run automated backups every 12 hours. Disk space for default backups is not counted against your plan's storage limit.

You can also schedule additional backups yourself as needed. For these additional user-scheduled backups, storage is billed at $0.023 per GB per month. Backups include system tables as well as your data and start at around 140MB.

Organization usage and billing page

Each organization has its own billing page, from which you can:

  • View your current and previous usage per database
  • Upgrade a free database to the Scaler or Hobby plan
  • Upgrade a Scaler database to the Scaler Pro plan
  • Enter/update your credit card information
  • Download current and previous invoices

To find your billing page:

  1. Go to your PlanetScale dashboard
  2. Select the organization whose billing page you want to view
  3. Click on "Settings" in the top nav
  4. Click on "Usage and billing" in the side nav
  5. Click on the "Billing" tab in the top nav

PlanetScale invoice details

Invoices provide line items for both usage and discounts received. Each line item shows both metric and database branch level granularity.

For example, you may have the following line items:

  • Rows read for main branch
  • Rows read for your-test-branch
  • Rows read for main branch read-only region

In addition, storage per branch may have the following line items:

  • Storage usage per GB
  • Prorated discounts, if the branch existed for a smaller time period than the billing period
  • Storage totals for each read-only region

Storage is prorated by a percentage equal to the existence of a branch's hours/billing period in hours.

Download an invoice

To download an invoice, go to your billing page (Organization > Settings > Usage and billing > Billing).

You'll see a table of current and previous monthly invoices. You can download an invoice by month by clicking the "Download" button. This will send you to a Stripe invoice page, where you'll have the option to download the complete invoice in PDF format, see invoice details, or download your receipt.

To see more details about your billing from the PlanetScale dashboard, click the "View details" button on the Billing page next to the month you want to view. This will show you an overview of the charges for all of the databases in your organization.

Note

PlanetScale generates both current and past invoices. Even for the free plan! You can see the cost had you not been on the Hobby plan.

Using coupons

You can redeem a coupon in the PlanetScale dashboard. To redeem a coupon, you must first enter your credit card information. Once you have a credit card on file, go to your Organization Settings page, click "Usage and billing", click "Redeem a coupon" on the right, enter your coupon, and click "Redeem coupon".

Note
You may incur additional costs if your usage continues beyond the period, dollar amount, or any other metrics specified in the coupon terms. Additional costs will be charged to your card on file. If you have any questions about the terms of the coupon, please reach out to our Support team.

How do coupons affect invoices

You will see your coupon reflected in your monthly invoice. Go to "Settings" > "Usage and billing" > "Billing" > and select the invoice for the month(s) where your coupon was active. You will see a note at the top of the invoice similar to this:

Amount reflects your $xx.xx discount with code YOURCOUPONCODE

PlanetScale dashboard - Example coupon factored into invoice

Need help?

Get help from the PlanetScale support team, or join our GitHub discussion board to see how others are using PlanetScale.

Was this page useful?
Last updated on Help us improve this page