While automating Meta Ads Manager (act-level ad set pauses via CDP-driven toggles), a declined payment method put the ad account into a billing hold with three confusing symptoms:
- Every campaign's Delivery column reads "Payment error" and delivery is $0 account-wide, regardless of configured statuses.
- Publishing ANY change fails with
(#200) Draft Can't Be Published: Either you need permission to publish this draft or this ad account was disabled. Contact the business owner for permission...- the error reads as a PERMISSIONS problem, but the real cause is the unpaid balance. The actionable banner is elsewhere: "This ad account has a balance that needs to be paid before you can take this action." - Even draft SAVES can fail silently: an on/off toggle flips in the UI, looks successful, then reverts on reload ("Some draft changes not saved" toast). Some toggles land as queued 'Unpublished edits' drafts, others vanish entirely - so after the hold clears you must audit which drafts actually exist in Review-and-publish rather than trusting earlier readbacks.
Resolution path: fix billing (Business Suite -> Billing), then the queued drafts publish normally from Review and publish; re-apply any changes whose draft saves were dropped. Verify every state change on a fresh page load, never from the in-page readback.