---
title: "Pay Google Ads workspace debt"
method: POST
path: "/api/apps/{app_id}/google-ads/billing/workspace-pay-now"
---

# Pay Google Ads workspace debt

`POST /api/apps/{app_id}/google-ads/billing/workspace-pay-now`

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

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads campaigns to manage.

## Request body

- object

## Response `200`

What happened, and the balance afterwards.

- PayNowResult — The outcome of settling the workspace's ad-spend balance.
  - `status` string, required — 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.
  - `summary` WorkspaceDebtSummary, required — Whether the workspace owes anything for Google Ads spend.
    - `state` string, required — 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.
    - `account_id` string, nullable — ID of the Google Ads account the balance belongs to, or `null` when `state` is `no_workspace_debt`.
    - `app_id` string, nullable — 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`.
    - `account_status` string, nullable — Status of the held Google Ads account, or `null` when `state` is `no_workspace_debt`.
    - `block_reason` string, nullable — Why the account is held, or `null` when it is not held or the reason is unrecorded.
    - `charge_trigger_mode` string, nullable — 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`.
    - `recoverable` boolean, required — Whether the account is in a state Base44 can settle at all (`true`) or not (`false`).
    - `can_pay_now` boolean, required — Whether there is a chargeable invoice and a usable card, so settling would go through now (`true`) or not (`false`).
    - `requires_payment_method` boolean, required — Whether a card has to be added or replaced before the balance can be settled (`true`) or not (`false`).
    - `stripe_unavailable` boolean, required — 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.
    - `payment_method` WorkspaceDebtPaymentMethod — The card the workspace has on file.
      - `brand` string, required — Card brand, as the payment provider reports it. Empty when the provider did not return one.
      - `last4` string, required — Last four digits of the card. Empty when the provider did not return them.
    - `invoice` WorkspaceDebtInvoice — The unpaid Google Ads invoice behind a workspace's billing hold.
      - `id` string, required — Base44's ID for the invoice.
      - `status` string, required — Where the invoice stands. `FAILED` is an invoice whose charge did not go through, and `PENDING` is one Base44 is still collecting.
      - `billing_type` string, required — 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.
      - `period_start` string, required — First day of the spend the invoice covers, as `YYYY-MM-DD`.
      - `period_end` string, required — Last day of the spend the invoice covers, as `YYYY-MM-DD`.
      - `amount_micros` integer, required — Amount owed in micros of `currency_code`, so `43500000` is 43.50.
      - `currency_code` string, required — Currency of `amount_micros` as a three-letter ISO 4217 code.
      - `failed_at` string, date-time, nullable — When the charge last failed, or `null` on an invoice that has not been attempted or is still pending.

## Other responses

- `401` — Missing or invalid credentials.
- `402` — 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` — 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` — The workspace has no outstanding Google Ads balance, so there is nothing to settle. This is a normal state, not an error.
- `409` — The workspace's Google Ads account is not in a state Base44 can settle through this endpoint.
- `422` — Validation Error
- `503` — 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.

---

[API](https://skmtc.dev/base44/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/base44/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/base44/base44-app-management-api/revisions/173e4e9c63c2/schema)
