## TL;DR
The project's billing account is closed, so GCP disabled billing-dependent services. Reopen the account in the Cloud Billing console as a billing admin - resolving the underlying payments issue first - then relink the project with gcloud. Verify billingEnabled comes back true.

```text
Billing account is not open
```

## Steps
1. List billing accounts: `gcloud billing accounts list` and note the account's open state.
   Expected: you find the account with open shown as false, or you find nothing at all.
2. If the list is empty, you lack billing permissions - get the Billing Account Administrator role on the account (or Project Billing Manager on the project) before anything else.
   Expected: the account appears in the list.
3. In the Cloud Billing console, open the closed account and choose Reopen. A closed account usually means the payments profile was closed or suspended - fix that first, since only a payments admin can.
   Expected: the account shows open.
4. Relink the project: `gcloud billing projects link [PROJECT_ID] --billing-account=[BILLING_ACCOUNT_ID]`.
   Expected: the command succeeds with no error.
5. Verify: `gcloud billing projects describe [PROJECT_ID]` shows billingEnabled true. Restart any resources that were shut down while billing lapsed.
   Expected: services resume and the error is gone.

## Use this when
- GCP API calls or the console report the billing account is not open.
- A project shows as linked to a closed billing account.
- Services stopped after a billing suspension and need re-enabling.

## Not for this skill when
- The error is permission denied on the Cloud Billing API - that is IAM, not account state.
- The billing export job hits BigQuery quota errors - different problem.

## Variant phrasings
- GCP billing account closed reopen
- Project linked to closed billing account
- Gcloud billing accounts list empty

## Why it happens
GCP ties service availability to an open billing account. When the account closes - usually because the payments profile was closed, suspended, or never finished verification - the project keeps pointing at the dead account until someone with the right role reopens it and relinks the project.

## Edge cases
- Organization policy constraints can block relinking even with the right roles - check for billing-related constraints if the link command fails.
- If the payments profile itself is the problem, only a payments admin on that profile can fix it; billing admins cannot.
- Resources shut down during the lapse do not always restart themselves - audit App Engine, Compute, and scheduled jobs after relinking.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_5CvIEd3Ipf2XQEbS2iPI0g
