---
title: "Get Google Ads workspace debt"
method: GET
path: "/api/apps/{app_id}/google-ads/billing/workspace-debt"
---

# Get Google Ads workspace debt

`GET /api/apps/{app_id}/google-ads/billing/workspace-debt`

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

Returns what the workspace owes for Google Ads spend, and whether it can be settled.

The balance is workspace-wide rather than per app. Base44 holds Google Ads at the workspace level, so this resolves the held account across every app in the workspace and reports it from whichever app you ask through. That is why `app_id` in the response can name a different app from the one in the path. Read `state` first, since `no_workspace_debt` is the normal answer and leaves every other field at a neutral default rather than omitting it.

Nothing here charges anything. Settling a balance is a card transaction Base44 deliberately keeps out of this API, so treat a `payable` state as something to raise with whoever owns the card.

<Note>Unlike the rest of the Google Ads API, this endpoint stays available while Google Ads is switched off for you, so a workspace can always see what it owes.</Note>

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

## Response `200`

What the workspace owes, and whether it can be settled.

- WorkspaceDebtSummary — 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.
- `403` — 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.

---

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