Requester Pays

Setup

This page provides an overview of the Requester Pays feature for Cloud Storage.

Introduction

Whenever a user accesses a Cloud Storage resource such as a bucket orobject, there arecharges associated with making and executing the request.Such charges include:

Normally, the project owner of the resource is billed for these charges;however, if the requester provides abilling project with their request, therequester's project is billed instead. With Requester Pays enabled on yourbucket, you canrequire requesters to include a billing project in theirrequests, thus billing the requester's project. Enabling Requester Pays isuseful, for example, if you have a lot of data you want to make available tousers, but you don't want to be charged for their access to that data.

Note: You currently incur no charges when you use theCloud Storage Transfer Service and have a billing project in yourrequest. This is a promotional price.

Charges not covered

Data storage charges, includingearly deletion charges, arealways applied to the project that contains the bucket, even if Requester Paysis enabled.

Restrictions

The following restrictions apply when using Requester Pays:

  • You cannot use a bucket that has Requester Pays enabled for imports andexports from Cloud SQL.
  • You cannot use a bucket that has Requester Pays enabled forexports from Pub/Sub.

Use and access requirements

To enable Requester Pays on a bucket,enable the metadata flag on thebucket. Once enabled, only the following users can access the bucketor its contents:

  • Requesters whoinclude a billing project in their request. The projectused in the request must be in good standing, and the user musthave a role in the project that contains theserviceusage.services.usepermission. TheService Usage Consumer role contains the requiredpermission.

  • Requesters who don't include a billing project but haveresourcemanager.projects.createBillingAssignment permission for the projectthat contains the bucket. TheBilling Project Manager role containsthe required permission. Access charges associated with theserequests are billed to the project that contains the bucket.

All other requests to the bucket fail with a400 UserProjectMissing error.

In addition to these requirements, the requester must have sufficientpermission to perform the requested action. For example, a user thatprovides a valid billing project in their request cannot upload objects to thebucket unless they also have explicit permission to do so, such as by havingstorage.objects.create permission for that bucket or the project thatcontains it.

When disabling Requester pays, you must include a billing project in yourrequest, or have theresourcemanager.projects.createBillingAssignmentpermission.

Important: Buckets that have Requester Pays disabled still accept requests thatinclude a billing project, and charges are applied to the billing projectsupplied in the request. Consider any billing implications priorto including a billing project in all of your requests.

Source-billed operations

Operations that have both a source bucket and a destinationbucket, such as a copy or rewrite, charge to the projectthat contains the source bucket. In most cases, such as direct calls using theJSON and XML APIs, you only need to include a billing project if thesourcebucket has Requester Pays enabled.

In some cases, such asgcloud storage cp with a--no-clobber flag, you needto include a billing project if either the source bucket or destination bucket(or both) have Requester Pays enabled. This is because such operations makecalls to both the source and destination buckets in the course of performingthe action.

Multi-request operations

For operations that require multiple requests to complete, the use of billingprojects in your requests have the following behaviors:

Billing

Charges associated with including a billing project in your request do notappear separately in your billing. For example, say you make severaldownloads from a Requester Pays bucket, and you use the projectmy-projectas the project to bill for the request. Ifmy-project also contains a bucketfrom which you perform downloads, your bill only shows the total chargesfor your combined downloads. It does not distinguish between the downloadsfrom your own bucket and those from the Requester Pays bucket.

If you wish to distinguish between charges from your own Cloud Storageresources and charges from including billing projects in your requests, youshouldcreate a project that contains no Cloud Storage resources: thisproject is thus dedicated to making requests to resources in other projects,such as Requester Pays buckets.

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.