Lock in $67
Troubleshooting

Ad account not spending: the billing status to check

Everyone looks for a payment flag on the account. Meta does not publish one, and the connector has no billing field at all. The signal is on the ads.

Espen Opdahl Published 5 min read
The short answer

There is no has_payment_method field. Meta's ad account node does not publish one, and Claude's official ads connector has never heard the name. What Meta does publish is funding_source, and its own reference says an account without a payment method can still have ads built in it — those ads simply get no delivery. The connector cannot read that field either. The one billing signal it does expose sits a level down, on the campaign, ad set and ad: effective_status, and the value to look for is PENDING_BILLING_INFO.

The campaigns say Active. The ads say Active. The spend column is blank, and has been blank since you switched everything on. Nothing errored, nothing was rejected, and no notification arrived. You ask Claude what is wrong and get a confident paragraph back, possibly containing a field name you have never seen.

The useful question is not “is a card attached.” It is which account-level stop you are sitting behind, and whether this connector can see it. Mostly it cannot — and knowing where the blind spot starts is what stops you rebuilding audiences for a week to fix a billing problem.

Meta's rule: no payment method, no delivery, no error

The Marketing API's ad account reference documents a field called funding_source, described as the ID of the payment method, and the sentence that follows it is the whole problem:

“If the account does not have a payment method it will still be possible to create ads but these ads will get no delivery. Not available if the account is disabled.”

Read that as an operator rather than a developer. Creation succeeds. The objects exist. Every status you can see is the status you set. The failure is expressed as an absence — no impressions, no spend — which is exactly the shape of a targeting problem, a bidding problem or a creative problem, and that is why people spend days on the wrong one.

Billing is not the only stop with that shape. The same reference documents account_status — active, disabled, unsettled, pending risk review, pending settlement, in grace period — and disable_reason. It also documents the account spend cap, where Meta's wording is blunt: when the amount is reached, all delivery stops. Each of those is silent in the same way.

The Claude Ads Operator course puts the account-level checks at the top of the weekly routine, before any question about performance, because a stopped account makes every performance answer meaningless.

worth knowing Neither Meta's ad account node nor Claude's connector publishes a field called has_payment_method.

Meta's ad account reference (checked 2026-09-03) lists funding_source, funding_source_details, account_status, disable_reason, balance and is_prepay_account. No has_payment_method. Handed that name and all six real ones, the connector's field-metadata tool returned the lot as unknown_fields (checked 2026-09-03), the genuine Meta fields included. A reply reporting has_payment_method: false is therefore naming a field neither side publishes — the pattern in catching wrong numbers before you act on them. It may still be right. It did not read it here.

Where billing does show up in the connector

One field carries it, and it is not on the account. The catalogue defines effective_status as the delivery status that can diverge from the one you set, and it names four causes of the divergence: the parent's state, ad review, budget conditions, and billing. status is your instruction. effective_status is what is happening to it.

Its enum includes a value named PENDING_BILLING_INFO, described in the catalogue as delivery being paused pending valid billing info. That description is worth noting because Meta's own ad reference lists PENDING_BILLING_INFO in the enum and explains none of the values — the connector's catalogue is, for once, more informative than the document it derives from.

The practical part: the field is filterable and sortable, with the operators IN, NOT_IN, EQUAL and NOT_EQUAL, at campaign, ad set and ad level. You can ask for every ad holding at PENDING_BILLING_INFO and get a list back.

What you cannot do is ask any of it about the account, because the field is not offered at that level. The connector's account listing is no help either: its entries carry identifiers for the account and its owning business plus two flags governing whether the connector may talk to it at all, and neither flag is about money. The second is covered in the post on is_queryable.

The error tool rules itself out in writing. Its description names the categories it does not cover, and disabled or restricted accounts is one of them. Hand it an account ID and you get errors for the child entities, never for the account itself — that surface is mapped in what ads_get_errors actually returns.

The questionCan the connector answer it?Where the answer actually lives
Is a payment method attached to this account? No field, no tool Ads Manager → Billing & payments
Is the account disabled, unsettled or in grace period? No — account_status is not in the catalogue The ad account node, or the account overview
Are my ads being held for billing right now? Yes — filter effective_status The ad, ad set or campaign row
Has the account spend cap stopped everything? No — the cap resolves at campaign level only Ads Manager, account settings

What to check, in order

  1. Filter on effective status, never read the status column START HERE

    Ask for every ad in the account where effective_status is not ACTIVE and not PAUSED. The reply separates billing holds from review problems from parent-level pauses in one pass, and it takes one call. The trade: it tells you delivery is being held for billing. It does not tell you which billing problem — a missing method, a declined charge and an unsettled balance can all land in the same bucket.

  2. Open Billing before you open the campaign

    Everything the connector cannot see — funding source, account status, disable reason, outstanding balance, the spend cap — is one page in Ads Manager. If the ads came back clean and the account still spends nothing, that page is a faster read than any prompt.

  3. Rule out the cap before you rule out the card

    A cap that has been reached stops delivery exactly the way a missing card does, and it is the more common surprise on an account that ran normally for months and then went quiet. The connector resolves a spend cap at campaign level only, so this is a manual check — the same account-level gap described in the post on minimum daily budgets.

  • Believing the status column. Active is what you set. It survives a dead card, a hit spend cap and an unsettled balance without changing.
  • Asking the error tool about the account. It excludes disabled and restricted accounts by design, so a clean result there says nothing about whether the account can pay.
  • Accepting a field name you cannot find in the reference. If a reply names a field, search Meta's node reference for it before acting. A confident answer about a field that does not exist is still an answer about nothing.
  • Rebuilding the targeting. A billing stop presents as no delivery, which reads like a narrow audience — but no audience blanks the spend column on every ad at once.

Try this tonight Pull your ads grouped by effective_status value, and read the groups rather than the rows. PENDING_BILLING_INFO means Ads Manager under Billing, not a campaign edit. DISAPPROVED or WITH_ISSUES means the ad, not the account. CAMPAIGN_PAUSED or ADSET_PAUSED means structure you set and forgot. Three groups, three different jobs for the next hour.

Can Claude add or fix a payment method for me?

No. The connector exposes no billing tool and no field that writes payment information, which is the right design. Payment methods are added and repaired in Ads Manager under Billing and payments, by a person with the right role on the business portfolio.

Claude said my account has no payment method. Was it wrong?

Possibly not, but it did not learn it from the connector. There is no account-level billing field in the catalogue, so the claim came from the model's own knowledge, from something you told it, or from an inference off the ad-level status. Ask it which tool call the answer came from. If it cannot name one, verify in Ads Manager before you act.

Does is_queryable: false mean a billing problem?

It is a separate flag with its own reason field, and it governs whether the connector may query the account at all — not whether the account can spend. An account can be perfectly queryable and completely unable to deliver, and the reverse happens too.

Once billing is fixed, will the ads restart on their own?

The enum describes a hold pending valid billing info, so the state is defined as temporary rather than terminal. What the connector will not tell you is when it clears, or whether an ad set resumes at its former pace. Confirm the restart in Ads Manager and check delivery the next morning.

Meta does not document the connector's field surface anywhere, so none of the above is published as connector behaviour. It is read from the catalogue the connector itself ships, on 2026-09-03; the account-level facts come from Meta's node references, linked above. If you are still setting the connector up, start with connecting Claude to Meta Ads.

Check the account before you debug the campaign

The course is the weekly operator routine written down: the account-level checks that come first, the prompts that run them, and the verification step that catches an answer the connector never fetched.

See what's inside — $67 founding price

Pre-sale: the modules are still being recorded and founding members get the checkout link first. No charge today. Public price $97.

Espen Opdahl Writes The Claude Ads Operator. I run Meta ad accounts through Claude and Meta's official ads connector, and I write down what actually happens — including the parts that don't work. Not affiliated with Meta or Anthropic.