Last updated 21 July 2026 · by Adrian Tan, SDM
You set a S$40 daily budget, hit publish, and came back the next morning to find the ad set had spent S$0.83. Or nothing at all. The campaign is “Active”, the ad is “Active”, and yet the money is not moving.
This is one of the most common problems we are asked to diagnose on Singapore Meta accounts, and it is also one of the most misdiagnosed. The instinct is to assume something is broken and start changing things — new creative, new audience, higher budget — when in most cases the account is behaving exactly as Meta designed it to, and the fix is the opposite of what people reach for.
This guide walks through why a Facebook or Instagram ad set does not spend, in the order you should actually check, with the Singapore-specific traps — GST and payment setup, the small-market audience-size problem, and PDPA — that generic overseas guides miss. Work through it top to bottom; the causes are ordered roughly by how often they are the real culprit.
First, decide which problem you actually have
There are two completely different problems that both look like “my ads are not spending”, and they have different causes:
- Zero delivery. The ad set has spent nothing, or a few cents, and shows no impressions. This is almost always a hard block — approval, billing, audience size, or schedule — not an optimisation problem.
- Under-delivery. The ad set is spending, getting impressions, but never reaches its daily budget — it paces at S$12 of a S$40 budget, day after day. This is usually an economics problem: Meta cannot find enough people it can serve profitably at the price you have set.
Before anything else, open Ads Manager, add the Delivery column, and read what it literally says. “In review”, “Rejected”, “Not delivering”, “Learning”, “Learning limited” and “Active” are all different diagnoses. The single most expensive mistake Singapore advertisers make is to see “not spending”, panic, and edit the ad set — which resets the learning phase on top of whatever the real problem was, making a temporary lull into a self-inflicted one. Diagnose before you touch anything.
Cause 1: the ad never actually got approved
The most common reason for genuine zero delivery is the simplest: the ad is still “In review”, or it was “Rejected” and you did not notice. New ads go through automated review before they can serve, and while most clear within a day, some sit longer — especially in regulated categories. In Singapore that catches a predictable set of advertisers: aesthetic clinics and anything health-adjacent, financial services and anything touching credit or investment, and property. Ads that reference personal attributes — “Are you struggling with acne?”, “Singaporeans over 50” — are routinely rejected under Meta’s personal-attributes rule, which forbids implying you know something about the viewer.
What to do: check the ad’s status in the Quality column. If it is rejected, read the specific policy cited and appeal or edit the offending ad — do not delete and rebuild, which loses any social proof and learning the ad had. If a whole batch is stuck in review for more than 24 hours, it is usually the creative or the landing page that is the hold-up, not a Meta outage. Regulated Singapore advertisers should assume review will be slower and stricter, and build a day of buffer into every launch.
Cause 2: billing, the card, and the Singapore GST trap
If the ad is approved and still not spending, billing is the next suspect. A declined card, an expired card, a hit payment threshold, or a payment method your bank has flagged for an overseas transaction will all halt delivery instantly. Singapore-issued cards sometimes block Meta’s charges as suspected foreign fraud — Meta bills from an overseas entity — so a card that works everywhere else can still fail here. Check Billing & Payments in Business Settings for failed-charge notices and add a backup payment method; accounts with a single card and no backup are the ones that flatline overnight.
While you are in payment settings, deal with the Singapore-specific issue almost every SME gets wrong. Meta bills Singapore advertisers as an overseas supplier under the Overseas Vendor Registration regime, and its rule is explicit: if your “sold to” country is Singapore and you have not added your GST registration number, Meta adds 9% GST to your spend; if you add your GST number, Meta does not charge GST at all. This does not directly cause non-delivery, but it means a GST-registered business that skips this step is quietly paying 9% more for every impression — effectively a 9% smaller budget. If you are GST-registered and have not entered your number, do it now; we cover the mechanics and the reason it works in Meta Ads vs Google Ads in Singapore.
Cause 3: an account or campaign spending limit you forgot about
Meta lets you set an account spending limit — a lifetime cap across the whole ad account — and a campaign spending limit. When either is reached, every ad set under it stops delivering, regardless of its own budget, and the ad set still shows as “Active”. This is a classic “it was working, then it just stopped” cause: an old S$500 account limit set months ago is finally hit, and the entire account goes dark at once.
Check the account spending limit in Billing settings and the campaign spending limit at campaign level. Raise or remove the one that is binding. If several unrelated campaigns all stopped on the same day, the account-level limit is almost certainly the reason — individual ad-set problems do not synchronise like that.
Cause 4: the audience is too small — and Singapore makes this worse
This is the cause that is genuinely harder in Singapore than almost anywhere, and it deserves the most attention. Meta’s optimisation needs a large enough pool of eligible people to find the ones likely to take your action. When the defined audience is too small, the system either cannot deliver at all or gets stuck perpetually “Learning limited”, spending in fits and starts.
Singapore is a market of roughly 5.9 million people. Facebook’s advertising reach here is about 3.80 million and Instagram’s about 3.35 million, per DataReportal’s Digital 2026 Singapore. Start from that ceiling and then watch what a typical local advertiser does to it:
| Targeting layer | Effect on a Singapore audience |
|---|---|
| Country: Singapore only | Caps you at ~3.8M (FB) before you narrow anything |
| Age 30–45 | Cuts roughly to a third |
| One district / “within 5km of Orchard” | Slashes it again — SG is 50km end to end |
| Two stacked interests with AND logic | Can collapse the pool by another 70–90% |
| Exclude existing customers + past engagers | Removes your warmest, most-eligible people |
Stack all of those and you can turn 3.8 million into 40,000 — below the level at which Meta can reliably optimise a conversion campaign. The overseas rule of thumb of “aim for at least a million people, and expect trouble below 500,000” is fine advice that a Singapore-only advertiser often physically cannot follow, because the whole country is not much bigger than that once you pick an age band.
The fixes, in order of preference: remove the most restrictive exclusion first (often the “exclude engagers” one that quietly deletes your best prospects); drop AND-stacked interests, which create impossible intersections; widen the geography from a district to the whole island; and lean on Advantage+ audience, which uses your targeting as a starting suggestion but lets Meta’s system reach beyond it when it finds likely converters. In a market this small, broad targeting with a good pixel signal usually beats hand-built narrow targeting — the algorithm has more room to work than you do. We go deeper on this in lowering your Meta cost per lead and retargeting and custom audiences.
Cause 5: the budget is too thin for the optimisation event
An ad set optimising for a conversion needs enough budget to buy enough of that conversion for the system to learn. Meta exits the learning phase after roughly 50 results in the week following the ad set’s last significant edit — not 50 clicks, 50 of whatever you are optimising for. If your event is a purchase that happens once per S$60 of spend, 50 of them a week needs about S$3,000 a month on that one ad set. Set a S$15 daily budget against that event and the ad set will never gather enough signal; it will spend erratically and stay “Learning limited” forever.
The two clean fixes are to raise the budget to a level that can realistically produce ~50 events a week, or to optimise for an earlier, cheaper event — a lead form or an add-to-cart instead of a purchase — so the same budget produces enough volume to learn from. What does not work is splitting a small budget across five ad sets: that guarantees every one of them stays below the threshold. On a modest Singapore budget, run fewer ad sets with more money each. Our guide to Meta campaign structure (CBO vs ABO) covers how to concentrate budget so ad sets can actually exit learning, and how to scale a Meta campaign covers doing it without triggering resets.
Cause 6: bid caps, cost caps and ROAS goals set too tight
If you have moved off the default bid strategy and set a manual bid cap, cost cap or a minimum ROAS goal, you have told Meta to only enter auctions it can win under that ceiling. Set the ceiling below what the Singapore auction actually clears at, and the honest result is that Meta wins almost nothing — the ad set spends a trickle or nothing at all. This looks identical to a delivery bug but is entirely self-imposed.
The tell is that delivery is near-zero despite a healthy audience and approved ads, and you are using a cost or bid control. The fix is to loosen it: remove the cap and let the strategy run on “Highest volume” for a few days to discover the real cost, then reintroduce a cap 25–50% above that discovered cost if you need one. A cap set from a spreadsheet target rather than from observed auction prices is the single most common reason a technically perfect ad set refuses to spend.
Cause 7: schedule, start dates and the timezone catch
Two boring settings stop more launches than people admit. First, an ad set scheduled with dayparting — only certain hours or days — will show “Active” but not deliver a cent outside its window; if you check at 9am and it only runs evenings, you see zero. Second, the start date: an ad set set to begin next Monday sits idle and “Active” until then. Third, and specific to us, your ad account has a fixed timezone chosen when it was created and it cannot be changed. If your account was set to a US timezone, your “midnight” budget reset and your dayparting windows are running on the wrong clock — a schedule you think covers Singapore lunchtime may actually be firing overnight. Confirm the account timezone and align every schedule to it.
Cause 8: you are competing against yourself
If you run several ad sets targeting overlapping Singapore audiences, they can enter the same auctions — and Meta will not let your own ad sets bid against each other. Instead it suppresses delivery on all but one to avoid inflating your own costs. In a market as small as Singapore, audience overlap is the default, not the exception: three ad sets all targeting “Singapore, 25–45, interested in fitness” are effectively the same people. The Audience Overlap tool shows how bad it is. The fix is consolidation — fewer, broader ad sets — which also solves the budget-too-thin and audience-too-small problems at the same time. Nearly every Singapore delivery problem points back to the same prescription: concentrate, do not fragment.
The under-spending case: it runs, but never hits budget
If the ad set spends but paces well under budget every day, none of the hard blocks apply — the economics do. Meta paces spend to get you the most results across the day, and if it cannot find enough people it can serve at your cost target, it simply spends less rather than overpay. The causes are the softer half of the list above: the audience is too narrow to sustain the budget, a cost or bid cap is throttling entry into auctions, a frequency cap is stopping it re-serving the small pool, or the creative has fatigued and Meta is throttling a poor performer.
The counter-intuitive fix is almost never “raise the budget” — that widens the gap. It is to give the system more room: broaden the audience, loosen the cap, refresh the creative so the auction values it more highly. Chasing an under-spending ad set with budget increases while keeping the constraints tight is the most common way Singapore advertisers turn a small problem into a stalled account.
A 10-minute Singapore diagnostic
When an ad set is not spending, run this before you change a single targeting or creative setting:
- Read the Delivery and Quality columns. In review? Rejected? Learning limited? Active but zero? Each is a different fix.
- Check Billing. Failed charge, expired card, no backup payment method? And is your GST number entered if you are GST-registered?
- Check spending limits. Account-level and campaign-level. Multiple campaigns dead at once = account limit.
- Check the audience size estimate. Under a few hundred thousand for a Singapore conversion campaign is a red flag. Remove exclusions and AND-stacked interests first.
- Check the schedule and timezone. Start date in the future? Dayparting? Account on the wrong timezone?
- Check your bid/cost controls. Any manual cap? Remove it for a few days to find the real cost.
- Only then consider budget and consolidation — and when you do change something, change one thing and wait 3–4 days.
Nine times out of ten the answer is in the first five steps, costs nothing, and did not require touching the parts of the campaign you were tempted to blow up.
Conclusion
An ad set that will not spend feels like a fault, but it is nearly always a message: something is blocking delivery, or the price you have set is below what the Singapore auction clears at. The discipline is to read that message in order — approval, billing, limits, audience, schedule, bids — and to fix the one binding constraint rather than reflexively rebuilding. And because Singapore is a small market, the same instruction keeps recurring: consolidate budget, widen audiences, and let Meta’s system do the narrowing it is better at than you are.
Spent an afternoon staring at an ad set that will not move? We run Meta for Singapore businesses and diagnose delivery problems like this every week. Talk to us, or explore Meta ads management and performance marketing. Start with the Meta ads Singapore guide, or go straight to what Meta ads cost in Singapore, setting up the Meta pixel and campaign structure. The results are in our case studies.
FAQ
Why is my Meta ad set active but spending nothing in Singapore?
“Active” only means the ad set is switched on, not that it can deliver. The usual hard blocks are an ad still in review or rejected, a failed payment method, an account or campaign spending limit that has been reached, an audience too small to optimise, or a start date and schedule that have not begun. Check the Delivery column first — it names the state.
How big does a Meta audience need to be in Singapore?
Singapore’s Facebook reach is about 3.80 million and Instagram about 3.35 million in total, so audiences here are small by design. For a conversion campaign, avoid narrowing much below a few hundred thousand; remove stacked exclusions and AND-logic interests, widen the geography to the whole island, and use Advantage+ audience rather than hand-built narrow targeting.
How many conversions does a Meta ad set need to exit the learning phase?
Roughly 50 results in the week following the ad set’s last significant edit — 50 of whatever you are optimising for, not 50 clicks. If your budget cannot realistically produce that, either raise the budget or optimise for an earlier, cheaper event such as a lead or add-to-cart.
Does not entering my GST number stop my Meta ads from spending?
No — but it costs you money. Meta bills Singapore advertisers under the Overseas Vendor Registration regime, so if you have not added your GST registration number it charges 9% GST; add your number and it charges none. A GST-registered business that skips this is effectively running a 9% smaller budget.
Should I raise the budget if my ad set is under-spending?
Usually not. Under-spending means Meta cannot find enough people to serve at your cost target, so raising the budget widens the gap. Instead broaden the audience, remove any bid or cost cap for a few days to discover the real auction price, and refresh fatigued creative.
I edited the ad set and now it is delivering even less — why?
Significant edits — to budget, targeting, creative, optimisation event or bid strategy — reset the learning phase, so delivery dips while the system recalibrates. Change one thing at a time and then leave the ad set alone for three to four days rather than editing repeatedly, which keeps it permanently learning.



