From a02d19553287032045c9f237a35f7069e060aced Mon Sep 17 00:00:00 2001 From: Rian McGuire Date: Thu, 9 Oct 2025 13:33:45 +1100 Subject: [PATCH 1/5] Volume snapshot pricing --- about/billing.html.markerb | 12 ++++++++++++ about/pricing.html.markerb | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/about/billing.html.markerb b/about/billing.html.markerb index 7c15e9d555..c318e074bf 100644 --- a/about/billing.html.markerb +++ b/about/billing.html.markerb @@ -58,6 +58,18 @@ If you create a volume, you will be charged for it. You’re billed for volumes --- +## Volume snapshot billing + +Volume snapshot billing is pro-rated to the hour and we subtract the free allowance first. For details, see [Volume Snapshots pricing](/docs/about/pricing/#volume-snapshots). + +If you create a snapshot of a volume (either manually or through automatic daily snapshots), you will be charged for the storage space it occupies. + +Snapshots are stored incrementally, so you're only charged for data that has changed since the previous snapshot for the volume. + +For example, if you have a 10GB volume with 2GB of actual data and 5 daily snapshots with minimal changes between them, you might be charged for around 2.5GB of total snapshot storage rather than 50GB (5 × 10GB). + +--- + ## Unified Billing Unified billing allows you to consolidate billing for multiple organizations under a single organization. This means you'll receive a single invoice for all organizations under unified billing. This feature is useful for managing billing for multiple organizations, such as when you have multiple teams or projects. diff --git a/about/pricing.html.markerb b/about/pricing.html.markerb index 162cac1099..f8b732a42f 100644 --- a/about/pricing.html.markerb +++ b/about/pricing.html.markerb @@ -157,6 +157,8 @@ Reserved and dedicated options: ## Persistent Storage Volumes +### Volumes + [Fly Volumes](/docs/volumes/) are local persistent storage for Machines. * $0.15/GB per month of provisioned capacity @@ -165,6 +167,29 @@ Reserved and dedicated options: You'll be charged for volumes that you create, whether they are attached to a Machine or not, including when an attached Machine is stopped. +### Volume Snapshots + +<% if Time.now.utc < '2026-03-01T00:00:00Z' %> +
+ **New charges** + +

+ Starting January 1st 2026, we're introducing charges for [volume snapshot](/docs/volumes/snapshots/) storage. +

+
+<% end %> + +* $0.08/GB per month +* First 10GB free each month + +[Volume Snapshot billing](/docs/about/billing/#volume-snapshot-billing) is pro-rated to the hour. + +Automatic daily snapshots with 5 days retention are enabled by default on new volumes. This can be [adjusted or disabled](/docs/volumes/snapshots/#set-or-change-the-snapshot-retention-period). + +Usage is calculated based on the total stored size of the snapshots, not the provisioned volume size. You're only charged for the actual data stored - if you've written 1GB to a 10GB volume, you'll be charged for around 1GB of snapshot storage. + +Snapshots for each volume are stored incrementally, so you'll only be charged for data that has changed since the previously stored snapshot. + ## Network prices ### Anycast IP addresses From cca6701c3720d05083f058e0993dc8a527cb8beb Mon Sep 17 00:00:00 2001 From: Rian McGuire Date: Thu, 9 Oct 2025 14:15:56 +1100 Subject: [PATCH 2/5] Update flyctl snapshot list example output --- volumes/snapshots.html.markerb | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/volumes/snapshots.html.markerb b/volumes/snapshots.html.markerb index a6e913d72c..fabf67f394 100644 --- a/volumes/snapshots.html.markerb +++ b/volumes/snapshots.html.markerb @@ -66,14 +66,12 @@ We automatically take daily snapshots of your volume and keep them for 5 days by Example output: ```out Snapshots - ID STATUS SIZE CREATED AT - vs_yAJylAAN83ZFna0A2yRA3J created 76082175 3 hours ago - vs_3NlZ9NNmpvoSP4yv3Om1gPm created 76082175 1 day ago - vs_Y49bw44Z6OocN8j4oXq6ww created 76082175 2 days ago - vs_gwMAXwwLjOVu1vPQVMN2w3N created 76082175 3 days ago - vs_Ql8xbllZOYDSmlKB0jxYVpg created 76082175 4 days ago - vs_plNk4llRGexSL22MOJYRpp created 76082175 5 days ago - vs_O9jqw997yvOuzyg1NVmmmjxhJ running 0 + ID STATUS STORED SIZE VOL SIZE CREATED AT RETENTION DAYS + vs_A1b2C3d4E5f6G7h8I9j0K1l2 created 2.0 GiB 10 GiB 5 days ago 5 + vs_M3n4O5p6Q7r8S9t0U1v2W3x4 created 187 MiB 10 GiB 4 days ago 5 + vs_Y5z6A7b8C9d0E1f2G3h4I5j6 created 45 MiB 10 GiB 3 days ago 5 + vs_K7l8M9n0O1p2Q3r4S5t6U7v8 created 106 MiB 10 GiB 2 days ago 5 + vs_O9jqw997yvOuzyg1NVmmmjxh running 0 B 10 GiB ``` The state of the new snapshot will go from `waiting` to `running` to `created`. @@ -97,12 +95,12 @@ Restore the data from a volume by creating a new volume from a snapshot: Example output: ```out Snapshots - ID SIZE CREATED AT - vs_1KRgwpDqZ2ll5tx 17649006 1 day ago - vs_nymJyYMwXpjxqTzJ 17677766 2 days ago - vs_R3OPAz5jBqzogF16 17689473 3 days ago - vs_pZlGZvq3gkAlAcaZ 17655830 4 days ago - vs_A9k6age3bQov6twj 17631880 5 days ago + ID STATUS STORED SIZE VOL SIZE CREATED AT RETENTION DAYS + vs_A1b2C3d4E5f6G7h8I9j0K1l2 created 2.0 GiB 10 GiB 5 days ago 5 + vs_M3n4O5p6Q7r8S9t0U1v2W3x4 created 187 MiB 10 GiB 4 days ago 5 + vs_Y5z6A7b8C9d0E1f2G3h4I5j6 created 45 MiB 10 GiB 3 days ago 5 + vs_K7l8M9n0O1p2Q3r4S5t6U7v8 created 106 MiB 10 GiB 2 days ago 5 + vs_W9x0Y1z2A3b4C5d6E7f8G9h0 created 73 MiB 10 GiB 1 day ago 5 ``` 1. Restore data from the volume snapshot into a new volume of equal or greater size: From 44fe93998fa9446fcb2c2ddea041d9221a43f5a8 Mon Sep 17 00:00:00 2001 From: Rian McGuire Date: Thu, 9 Oct 2025 14:26:19 +1100 Subject: [PATCH 3/5] Add list snapshots example to snapshots page --- volumes/snapshots.html.markerb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/volumes/snapshots.html.markerb b/volumes/snapshots.html.markerb index fabf67f394..f33a6bc1b0 100644 --- a/volumes/snapshots.html.markerb +++ b/volumes/snapshots.html.markerb @@ -124,6 +124,31 @@ Restore the data from a volume by creating a new volume from a snapshot: For options, refer to the [`fly volumes create` docs](/docs/flyctl/volumes-create/) or run `fly volumes create --help`. +## List snapshots and their stored sizes + +Snapshots for each volume are stored incrementally, so only data that has changed since the previously stored snapshot consumes additional storage. The total stored size of the snapshots is used for [Volume Snapshot billing](/docs/about/billing/#volume-snapshot-billing). + +1. Run `fly volumes list` and copy the ID of the volume. + +1. List the volume's snapshots: + + ```cmd + fly volumes snapshots list + ``` + + Example output: + ```out + Snapshots + ID STATUS STORED SIZE VOL SIZE CREATED AT RETENTION DAYS + vs_A1b2C3d4E5f6G7h8I9j0K1l2 created 2.0 GiB 10 GiB 5 days ago 5 + vs_M3n4O5p6Q7r8S9t0U1v2W3x4 created 187 MiB 10 GiB 4 days ago 5 + vs_Y5z6A7b8C9d0E1f2G3h4I5j6 created 45 MiB 10 GiB 3 days ago 5 + vs_K7l8M9n0O1p2Q3r4S5t6U7v8 created 106 MiB 10 GiB 2 days ago 5 + vs_W9x0Y1z2A3b4C5d6E7f8G9h0 created 73 MiB 10 GiB 1 day ago 5 + + Total stored size: 2.5 GiB + ``` + ## Disable automatic daily snapshots Automatic daily snapshots are enabled by default. To disable automatic snapshots, use the `--scheduled-snapshots=false` flag. From 1942f83461150967d7dfcd545c4d8624ab5a042a Mon Sep 17 00:00:00 2001 From: Rian McGuire Date: Thu, 16 Oct 2025 10:13:09 +1100 Subject: [PATCH 4/5] Add dashboard link --- about/pricing.html.markerb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/about/pricing.html.markerb b/about/pricing.html.markerb index f8b732a42f..b9b3702c36 100644 --- a/about/pricing.html.markerb +++ b/about/pricing.html.markerb @@ -176,6 +176,10 @@ You'll be charged for volumes that you create, whether they are attached to a Ma

Starting January 1st 2026, we're introducing charges for [volume snapshot](/docs/volumes/snapshots/) storage.

+ +

+ If you're an existing customer, you can check your usage in the **Billing** section of the [dashboard](https://fly.io/dashboard/personal/billing) on your Upcoming Invoice and in the Cost Explorer. +

<% end %> From dffd4589fe177212772b8173afc5cb7f3081a957 Mon Sep 17 00:00:00 2001 From: Rian McGuire Date: Thu, 16 Oct 2025 10:13:23 +1100 Subject: [PATCH 5/5] Link to adjust and disable sections separately --- about/pricing.html.markerb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/about/pricing.html.markerb b/about/pricing.html.markerb index b9b3702c36..b20aa7d63b 100644 --- a/about/pricing.html.markerb +++ b/about/pricing.html.markerb @@ -188,7 +188,7 @@ You'll be charged for volumes that you create, whether they are attached to a Ma [Volume Snapshot billing](/docs/about/billing/#volume-snapshot-billing) is pro-rated to the hour. -Automatic daily snapshots with 5 days retention are enabled by default on new volumes. This can be [adjusted or disabled](/docs/volumes/snapshots/#set-or-change-the-snapshot-retention-period). +Automatic daily snapshots with 5 days retention are enabled by default on new volumes. This can be [adjusted](/docs/volumes/snapshots/#set-or-change-the-snapshot-retention-period) or [disabled](/docs/volumes/snapshots/#disable-automatic-daily-snapshots). Usage is calculated based on the total stored size of the snapshots, not the provisioned volume size. You're only charged for the actual data stored - if you've written 1GB to a 10GB volume, you'll be charged for around 1GB of snapshot storage.