> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Retry Google Ads billing setup

> <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>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/google-ads/accounts/{account_id}/retry-billing-setup
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/google-ads/accounts/{account_id}/retry-billing-setup:
    post:
      summary: Retry Google Ads billing setup
      description: >-
        <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>
      operationId: >-
        retry_billing_setup_api_apps__app_id__google_ads_accounts__account_id__retry_billing_setup_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            title: App Id
        - name: account_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              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 404.
            title: Account Id
          description: >-
            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 404.
          example: 68b1c0d4e7b91d003c45a1f8
      responses:
        '200':
          description: The account after the retry. Read `status`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleAdsAccountResource'
        '401':
          description: Missing or invalid credentials.
        '402':
          description: No payment method on the workspace.
        '403':
          description: >-
            You don't have access to this app, the app does not exist, or you
            used a workspace API key. A missing app and an app you cannot reach
            are deliberately the same answer.
        '404':
          description: >-
            The app has no connected Google Ads account, or no account with this
            ID belongs to this app.
        '409':
          description: The workspace is on a billing hold.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    GoogleAdsAccountResource:
      properties:
        id:
          type: string
          title: Id
          description: >-
            Base44's ID for the account. Pass it as `account_id` on the other
            account endpoints.
          example: 68b1c0d4e7b91d003c45a1f8
        account_name:
          type: string
          title: Account Name
          description: Name of the Google Ads account.
          example: Nordwind Furniture
        google_customer_id:
          type: string
          title: Google Customer Id
          description: >-
            The account's customer ID in Google Ads. Empty until Google has
            provisioned it.
          example: '1234567890'
        status:
          type: string
          title: Status
          description: >-
            `ACTIVE`, `BLOCKED`, `SUSPENDED`, `BILLING_HOLD`, `CANCELED`,
            `PENDING_VERIFICATION`, `PENDING_BILLING_SETUP`, or `PENDING_CLOSE`.
            Only an `ACTIVE` account can create or resume campaigns.
          example: ACTIVE
        currency_code:
          type: string
          title: Currency Code
          description: Currency the account bills in, as an ISO 4217 code.
          example: EUR
        timezone:
          type: string
          title: Timezone
          description: Time zone the account reports in, as an IANA name.
          example: Europe/Berlin
        budget_active:
          type: boolean
          title: Budget Active
          description: >-
            `true` when the account has a live Google Ads budget, which
            campaigns need in order to serve.
          example: true
        billing_cadence:
          type: string
          title: Billing Cadence
          description: >-
            How often the account is charged: `1w`, `2w`, or `1m`. Only drives
            charging when `charge_trigger_mode` is `cadence`.
          example: 1w
        charge_trigger_mode:
          type: string
          title: Charge Trigger Mode
          description: >-
            What triggers a charge on this account. `cadence` charges on the
            `billing_cadence` schedule. `threshold` is a legacy mode that
            charges when spend crosses a ladder of thresholds and ignores
            `billing_cadence` entirely.
          example: cadence
        monthly_spend_cap_micros:
          type: integer
          title: Monthly Spend Cap Micros
          description: >-
            Monthly spend cap in micros of the account currency, so `500000000`
            is 500.00. `0` when no cap is set.
          example: 500000000
        auto_renew:
          type: boolean
          title: Auto Renew
          description: >-
            `true` when the account's budget renews automatically at the end of
            its window.
          example: true
        budget_window_end:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Budget Window End
          description: When the current budget window ends. `null` before a budget exists.
          example: '2026-09-30T23:59:59Z'
        terms_accepted_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Terms Accepted At
          description: >-
            When the Google Ads terms were accepted for this account. `null`
            until they are.
          example: '2026-08-25T11:20:00Z'
        business_profile_location_id:
          type: string
          title: Business Profile Location Id
          description: >-
            Google Business Profile location linked to the account, as
            `locations/<id>`. Empty when none is linked.
          example: locations/12345
        created_date:
          type: string
          format: date-time
          title: Created Date
          description: When the account was created in Base44.
          example: '2026-08-25T11:20:00Z'
        updated_date:
          type: string
          format: date-time
          title: Updated Date
          description: When Base44 last changed its record of the account.
          example: '2026-08-25T14:05:00Z'
      type: object
      required:
        - id
        - account_name
        - google_customer_id
        - status
        - currency_code
        - timezone
        - budget_active
        - billing_cadence
        - charge_trigger_mode
        - monthly_spend_cap_micros
        - auto_renew
        - business_profile_location_id
        - created_date
        - updated_date
      title: GoogleAdsAccountResource
      description: >-
        The account fields this API commits to.


        A subset. `GoogleAdsAccount` also carries Base44's billing-retry
        counters,

        risk-screening and block-source IDs, notification fingerprints, Google

        billing-setup IDs and setup error strings, none of which are a caller's

        contract.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````