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

# Pay Google Ads workspace debt

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

Charges the workspace's card on file to settle its outstanding Google Ads balance.

<Warning>This moves money. It charges the card immediately, with no confirmation step and nothing in the request that asks a person first, so treat calling it as the approval. Read [Get Google Ads workspace debt](/api-reference/get-google-ads-workspace-debt) beforehand to see the amount, and only call this when a human has agreed to it.</Warning>

Read `status` rather than the HTTP status. Only `paid`, `already_settled` and `paid_recovery_incomplete` mean the balance is dealt with; every other value comes back under a 200 having charged nothing, and `summary` tells you why.

Retrying is safe. Base44 serializes the charge per account against the specific invoice, so two calls racing each other cannot double-charge, and a repeat call once a charge is in flight reports `pending_payment` instead of starting another.

The body takes no fields. Send an empty object, since anything else is rejected.

Settling clears the hold that stops campaigns serving, so a campaign paused for non-payment can resume afterwards. The `summary` in the response reports whether the account actually came back, which is what `paid_recovery_incomplete` distinguishes.

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

<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/billing/workspace-pay-now
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/billing/workspace-pay-now:
    post:
      summary: Pay Google Ads workspace debt
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Charges the workspace's card on file to settle its outstanding Google
        Ads balance.


        <Warning>This moves money. It charges the card immediately, with no
        confirmation step and nothing in the request that asks a person first,
        so treat calling it as the approval. Read [Get Google Ads workspace
        debt](/api-reference/get-google-ads-workspace-debt) beforehand to see
        the amount, and only call this when a human has agreed to it.</Warning>


        Read `status` rather than the HTTP status. Only `paid`,
        `already_settled` and `paid_recovery_incomplete` mean the balance is
        dealt with; every other value comes back under a 200 having charged
        nothing, and `summary` tells you why.


        Retrying is safe. Base44 serializes the charge per account against the
        specific invoice, so two calls racing each other cannot double-charge,
        and a repeat call once a charge is in flight reports `pending_payment`
        instead of starting another.


        The body takes no fields. Send an empty object, since anything else is
        rejected.


        Settling clears the hold that stops campaigns serving, so a campaign
        paused for non-payment can resume afterwards. The `summary` in the
        response reports whether the account actually came back, which is what
        `paid_recovery_incomplete` distinguishes.


        <Note>This endpoint accepts a personal API key. Workspace API keys are
        not authorized for it and are rejected with a 403.</Note>


        <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: >-
        pay_now_workspace_debt_api_apps__app_id__google_ads_billing_workspace_pay_now_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose Google Ads campaigns to manage.
            title: App Id
          description: ID of the app whose Google Ads campaigns to manage.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: PayWorkspaceDebt
              type: object
              properties: {}
            example: {}
      responses:
        '200':
          description: What happened, and the balance afterwards.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayNowResult'
        '401':
          description: Missing or invalid credentials.
        '402':
          description: >-
            The workspace has no usable card on file, so there is nothing to
            charge. Save one with [Create Google Ads payment
            setup](/api-reference/create-google-ads-payment-setup) first.
        '403':
          description: >-
            You don't have access to this app, the app does not exist, you used
            a workspace API key, or the workspace has an open payment dispute,
            which blocks any new charge until support resolves it.
        '404':
          description: >-
            The workspace has no outstanding Google Ads balance, so there is
            nothing to settle. This is a normal state, not an error.
        '409':
          description: >-
            The workspace's Google Ads account is not in a state Base44 can
            settle through this endpoint.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '503':
          description: >-
            Stripe is unreachable, or a charge on this account is already
            running and held the lock. Neither charged anything on this call,
            and both are temporary, so retry shortly.
components:
  schemas:
    PayNowResult:
      properties:
        status:
          type: string
          title: Status
          description: >-
            What happened. `paid` means the card was charged and the balance is
            settled. `pending_payment` means a charge was already in flight, so
            nothing new was attempted. `already_settled` means the invoice
            turned out to be paid and the account is back to normal, and
            `paid_recovery_incomplete` means it is paid but the account is still
            held. Anything else is the `state` from the summary, meaning no
            charge was attempted: `no_debt`, `not_recoverable`,
            `requires_payment_method`, `requires_payment_refresh`, or
            `unavailable`. Read this rather than the HTTP status, which is 200
            for every one of them.
          example: paid
        summary:
          $ref: '#/components/schemas/WorkspaceDebtSummary'
          description: >-
            The balance as it stands after the attempt, in the same shape [Get
            Google Ads workspace
            debt](/api-reference/get-google-ads-workspace-debt) returns. Read it
            back to confirm what actually changed.
      type: object
      required:
        - status
        - summary
      title: PayNowResult
      description: The outcome of settling the workspace's ad-spend balance.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    WorkspaceDebtSummary:
      properties:
        state:
          type: string
          title: State
          description: >-
            What can be done about the balance. `no_workspace_debt` means
            nothing is held. `payable` means there is an invoice and a usable
            card. `requires_payment_method` and `requires_payment_refresh` both
            mean a card is needed. `pending_payment` means a charge is already
            in flight. `paid_recovery_incomplete` means the invoice is paid but
            the account is still held. `unavailable` means the balance cannot be
            settled right now, including when `stripe_unavailable` is `true`.
            `no_debt` and `not_recoverable` mean the account has no settleable
            balance.
          example: payable
        account_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Account Id
          description: >-
            ID of the Google Ads account the balance belongs to, or `null` when
            `state` is `no_workspace_debt`.
          example: 68b1c0d4e7b91d003c45a1f8
        app_id:
          anyOf:
            - type: string
            - type: 'null'
          title: App Id
          description: >-
            ID of the app that owns the held account, which is not necessarily
            the app in the path. The value is `null` when `state` is
            `no_workspace_debt`.
          example: 6820f3a4e7b91d003c45a1f2
        account_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Account Status
          description: >-
            Status of the held Google Ads account, or `null` when `state` is
            `no_workspace_debt`.
          example: BLOCKED
        block_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Block Reason
          description: >-
            Why the account is held, or `null` when it is not held or the reason
            is unrecorded.
          example: PAYMENT_FAILED
        charge_trigger_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Charge Trigger Mode
          description: >-
            How the account is billed. `cadence` is the recurring charge and
            `threshold` is spend-triggered. The value is `null` when `state` is
            `no_workspace_debt`.
          example: cadence
        recoverable:
          type: boolean
          title: Recoverable
          description: >-
            Whether the account is in a state Base44 can settle at all (`true`)
            or not (`false`).
          example: true
        can_pay_now:
          type: boolean
          title: Can Pay Now
          description: >-
            Whether there is a chargeable invoice and a usable card, so settling
            would go through now (`true`) or not (`false`).
          example: true
        requires_payment_method:
          type: boolean
          title: Requires Payment Method
          description: >-
            Whether a card has to be added or replaced before the balance can be
            settled (`true`) or not (`false`).
          example: false
        stripe_unavailable:
          type: boolean
          title: Stripe Unavailable
          description: >-
            Whether Base44 could not reach the payment provider (`true`) or
            reached it fine (`false`). When it is `true` the card check failed
            closed, so `payment_method` reads `null` and `can_pay_now` reads
            `false` because the check failed, not because the card is missing.
            Retry rather than telling someone to add a card.
          example: false
        payment_method:
          anyOf:
            - $ref: '#/components/schemas/WorkspaceDebtPaymentMethod'
            - type: 'null'
          description: >-
            The card on file, or `null` when the workspace has none and when the
            payment provider could not be reached.
        invoice:
          anyOf:
            - $ref: '#/components/schemas/WorkspaceDebtInvoice'
            - type: 'null'
          description: >-
            The unpaid invoice behind the hold, or `null` when there is none to
            settle and when the latest one is already paid.
      type: object
      required:
        - state
        - recoverable
        - can_pay_now
        - requires_payment_method
        - stripe_unavailable
      title: WorkspaceDebtSummary
      description: Whether the workspace owes anything for Google Ads spend.
    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
    WorkspaceDebtPaymentMethod:
      properties:
        brand:
          type: string
          title: Brand
          description: >-
            Card brand, as the payment provider reports it. Empty when the
            provider did not return one.
          example: visa
        last4:
          type: string
          title: Last4
          description: >-
            Last four digits of the card. Empty when the provider did not return
            them.
          example: '4242'
      type: object
      required:
        - brand
        - last4
      title: WorkspaceDebtPaymentMethod
      description: The card the workspace has on file.
    WorkspaceDebtInvoice:
      properties:
        id:
          type: string
          title: Id
          description: Base44's ID for the invoice.
          example: 68b1c0d4e7b91d003c45a1fa
        status:
          type: string
          title: Status
          description: >-
            Where the invoice stands. `FAILED` is an invoice whose charge did
            not go through, and `PENDING` is one Base44 is still collecting.
          example: FAILED
        billing_type:
          type: string
          title: Billing Type
          description: >-
            Which billing run produced the invoice. `weekly` is the recurring
            charge, `reconciliation` trues up a period, `threshold` is
            spend-triggered, `google_monthly` mirrors an invoice Google issued,
            and `adjustment` is a manual correction.
          example: weekly
        period_start:
          type: string
          title: Period Start
          description: First day of the spend the invoice covers, as `YYYY-MM-DD`.
          example: '2026-08-18'
        period_end:
          type: string
          title: Period End
          description: Last day of the spend the invoice covers, as `YYYY-MM-DD`.
          example: '2026-08-24'
        amount_micros:
          type: integer
          title: Amount Micros
          description: Amount owed in micros of `currency_code`, so `43500000` is 43.50.
          example: 43500000
        currency_code:
          type: string
          title: Currency Code
          description: Currency of `amount_micros` as a three-letter ISO 4217 code.
          example: USD
        failed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Failed At
          description: >-
            When the charge last failed, or `null` on an invoice that has not
            been attempted or is still pending.
          example: '2026-08-25T04:12:00Z'
      type: object
      required:
        - id
        - status
        - billing_type
        - period_start
        - period_end
        - amount_micros
        - currency_code
      title: WorkspaceDebtInvoice
      description: The unpaid Google Ads invoice behind a workspace's billing hold.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````