---
title: "Retry Google Ads billing setup"
method: POST
path: "/api/apps/{app_id}/google-ads/accounts/{account_id}/retry-billing-setup"
---

# Retry Google Ads billing setup

`POST /api/apps/{app_id}/google-ads/accounts/{account_id}/retry-billing-setup`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/google-ads/accounts/{account_id}/retry-billing-setup`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Retries the Google Ads billing setup for an account whose first attempt failed.

Use this when the account is stuck in `PENDING_BILLING_SETUP`. It returns the account, so read `status` on the response to see whether the retry moved it on. A retry that fails again leaves the account where it was rather than erroring.

This needs a payment method on the workspace, and the workspace must not be on a billing hold.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

## Path parameters

- `app_id` string, required: ID of the app to advertise.
- `account_id` string, required: ID of the Google Ads account, as returned in `id` by [Get Google Ads account](/api-reference/get-google-ads-account). An account that belongs to a different app returns a 403.

## Response `200`

Successful Response

- GoogleAdsAccountResource: The account fields this API commits to.
  - `id` string, required: Base44's ID for the account. Pass it as `account_id` on the other account endpoints.
  - `account_name` string, required: Name of the Google Ads account.
  - `google_customer_id` string, required: The account's customer ID in Google Ads. Empty until Google has provisioned it.
  - `status` string, required: State of the account. Either `ACTIVE`, `BLOCKED`, `SUSPENDED`, `BILLING_HOLD`, `CANCELED`, `PENDING_VERIFICATION`, `PENDING_BILLING_SETUP`, or `PENDING_CLOSE`. Only an `ACTIVE` account can create or resume campaigns.
  - `currency_code` string, required: Currency the account bills in, as an ISO 4217 code.
  - `timezone` string, required: Time zone the account reports in, as an IANA name.
  - `budget_active` boolean, required: Whether the account has a live Google Ads budget, which campaigns need in order to serve.
  - `billing_cadence` string, required: How often the account is charged: `3d`, `1w`, `2w`, or `1m`. Only drives charging when `charge_trigger_mode` is `cadence`.
  - `charge_trigger_mode` string, required: What triggers a charge on this account. A mode of `cadence` charges on the `billing_cadence` schedule, while `threshold` is a legacy mode that charges when spend crosses a ladder of thresholds and ignores `billing_cadence` entirely.
  - `monthly_spend_cap_micros` integer, required: Monthly spend cap in micros of the account currency, so `500000000` is 500.00. The value is `0` when no cap is set.
  - `auto_renew` boolean, required: Whether the account's budget renews automatically at the end of its window.
  - `budget_window_end` string, date-time, nullable: When the current budget window ends, or `null` before a budget exists.
  - `terms_accepted_at` string, date-time, nullable: When the Google Ads terms were accepted for this account, or `null` until they are.
  - `business_profile_location_id` string, required: Google Business Profile location linked to the account, as `locations/<id>`. Empty when none is linked.
  - `customer_grade` integer: How far the workspace has earned higher limits by paying on time. `0` until 3 invoices in a row are paid with no decline, then `1`, rising by one per further clean invoice. It never goes down; it reads `0` only while an account in the workspace is on hold or blocked.
  - `active_campaign_limit` integer: How many of the account's campaigns can be enabled at once. `2`, plus one per `customer_grade`, up to `5`.
  - `total_campaign_limit` integer: How many campaigns the account can hold in total, enabled or paused. Archived campaigns don't count.
  - `created_date` string, date-time, required: When the account was created in Base44.
  - `updated_date` string, date-time, required: When Base44 last changed its record of the account.

## Other responses

- `401`: Missing or invalid credentials.
- `402`: No payment method on the workspace.
- `403`: You don't have access to this app, the app does not exist, the account belongs to a different app, or you used a workspace API key. A missing app and an app you cannot reach are deliberately the same answer.
- `404`: The app has no connected Google Ads account, or there is no account with this ID in the workspace.
- `409`: The workspace is on a billing hold.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-21** `14b675435f77`: 1 info
  - added the optional property `total_campaign_limit` to the response with the `200` status
- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-06** `9a0e9d0827a1`: 2 info
  - added the optional property `active_campaign_limit` to the response with the `200` status
  - added the optional property `customer_grade` to the response with the `200` status

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/accounts/:account_id/retry-billing-setup/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
