Reading Google Ads impression costs and cost micros against a Singapore dollar invoice
What cost micros, CPM and the price asset actually hold, read from Google's API reference on 27 October 2026, and the Singapore currency and GST questions each one raises.
Published by AI Knows Us · Updated 27 October 2026
Cost micros is not a cost. It is a unit. Google's API reference, read on 27 October 2026, defines amount_micros on the Money object as an amount in micros where one million is equivalent to one unit, alongside a three character ISO 4217 currency code. So 2,750,000 cost micros in a Singapore dollar account is SGD 2.75, and the same integer in a United States dollar account is USD 2.75. Divide by 1,000,000 and read the currency code beside it. Everything else on this page follows from that one line, including the reason a dashboard total and a Singapore invoice can be describing the same month and still not match.
The money fields, as Google defines them
These definitions are quoted from the Google Ads API field reference, read 27 October 2026. The first one is the field most reports are built on and it is narrower than its name suggests.
| Field | Google's definition | Type |
|---|---|---|
| metrics.cost_micros | The sum of your cost-per-click (CPC) and cost-per-thousand impressions (CPM) costs during this period | INT64 |
| metrics.average_cpc | The total cost of all clicks divided by the total number of clicks received | DOUBLE |
| metrics.average_cpm | Average cost-per-thousand impressions (CPM) | DOUBLE |
| metrics.average_cost | The average amount you pay per interaction. This amount is the total cost of your ads divided by the total number of interactions | DOUBLE |
| Money.amount_micros | Amount in micros. One million is equivalent to one unit | int64 |
| Money.currency_code | Three-character ISO 4217 currency code | string |
Three things in that table are worth a Singapore finance team's attention.
- cost_micros is CPC plus CPM and nothing else. It is an integer sum of two charging models over a period. It is not your bill, because your bill is an invoice issued by a Google entity with a tax line, a billing currency and a billing period that need not line up with your report window.
- The currency code travels with the amount, not with the report. Every Money value carries its own ISO 4217 code. That is a design decision that protects you, and it is also why an exported report with the micros column kept and the currency column dropped is the most dangerous spreadsheet in this category.
- There is no cost per impression field. The impression side is priced per thousand, as average_cpm, which is why a per impression figure has to be divided by a thousand before it means anything. A Singapore display campaign quoted at SGD 6 is almost certainly SGD 6 per thousand, that is SGD 0.006 per impression, and the difference between those two readings is a factor of a thousand.
What the Google Ads API costs, which is nothing, and what it limits
The Google Ads API has no published fee. What it has instead is a quota, documented on Google's API limits and quotas page, read 27 October 2026, and the quota is the thing that actually constrains a Singapore reporting build.
| Access level or request type | Published limit | Error returned |
|---|---|---|
| Test access level | 15,000 API operations per day against test accounts | RESOURCE_EXHAUSTED |
| Explorer access level | 2,880 API operations per day against production accounts, 15,000 against test accounts | RESOURCE_EXHAUSTED |
| Basic access level | 15,000 API operations per day against both test and production accounts | RESOURCE_EXHAUSTED |
| Standard access level | Unlimited API operations per day against both test and production accounts | Not applicable |
| Mutate requests | 10,000 mutate operations per request | TOO_MANY_MUTATE_OPERATIONS |
| Planning Service requests | 1 query per second | RESOURCE_EXHAUSTED |
| Billing and Account Budget Service requests | 1 operation per mutate request | TOO_MANY_MUTATE_OPERATIONS |
For a small Singapore agency or an in house team, the row that bites is Explorer at 2,880 operations a day against production accounts. One client with a daily pull per campaign across a few dozen campaigns is nowhere near it. Twenty clients with hourly refreshes is. The fix is access level and request design rather than budget, because there is no amount of money that raises the number.
Where a Google report and a Singapore invoice stop agreeing
Four causes account for almost every reconciliation gap, and only the first is arithmetic.
- Micros read as units. A cost_micros value treated as dollars is a figure one million times too large. The tell is a monthly spend with six extra digits, and it is the easiest error on this list to spot and the most common to make.
- The spending limit, not the budget. Google's own help page on average daily budgets, read in its Singapore edition on 27 October 2026, states you will never pay more than your daily spending limit, which it gives as two times your average daily budget for most campaigns, or your monthly spending limit, which it gives as 30.4 times your average daily budget for most campaigns. A month with 31 days and a daily figure entered as a round number therefore does not produce a round monthly total.
- The tax line. IRAS states the current GST rate as 9 per cent on its GST basics page, read 27 October 2026, and names two routes by which an overseas supply is taxed in Singapore, reverse charge when you buy services from overseas suppliers and overseas vendor registration. Your report has no tax column. Your invoice does.
- The billing period. A report window is calendar. A billing period is set by your payment setting. Compare like for like or the difference will look like a pricing change.
On the Singapore entity question we are going to be plain about what we could not verify. On 27 October 2026 we could not read an advertiser facing Google page that names the contracting entity for a Singapore Google Ads account. The Google page we could read that names a Singapore GST registration is the AdSense help page titled Contracting entity is Google Asia Pacific Pte. Ltd., giving that company at Mapletree Business City II, 70 Pasir Panjang Road, number 03-71, Singapore 117371, with GST registration number 200817984R. That page concerns publishers charging Google rather than advertisers being charged, so it does not answer the advertiser question and we are not going to stretch it into an answer. Your own invoice does answer it, in the header and on the tax line.
Why a cost per click changed when you did not change a bid
The honest answer is that you never set the price of a click, only the most you would pay. Three things move the realised figure without any action from you, and all three are visible in your own report.
- The mix moved. cost_micros sums CPC and CPM costs. If a campaign serving on a per thousand basis grew its share of the period, an average cost per click computed over the whole account moves even though no click price changed.
- The competition moved. In a single city market, one new bidder on a short keyword list is a visible event. Marketing Agency Singapore's October 2026 index shows the scale of the range this produces, from S$1.98 for food and beverage up to S$56.92 for tuition and enrichment.
- The query mix moved. Broad match and automated bidding will find new queries, and new queries carry new prices. This is the one worth auditing monthly, because it is also where the cheap clicks are.
If you want to see which of the three it was, segment by campaign type first, then compare average_cpc against average_cost. The first divides by clicks and the second divides by interactions, so a gap between them tells you the mix is the cause.
Price assets, which is where your prices leave your site and enter an ad
The price asset is a different kind of money field. It does not report what you paid. It publishes what you charge, inside the ad itself. Google's API reference for PriceAsset, last updated 2026-10-13 UTC and read 27 October 2026, describes it as an asset representing a list of price offers, requires a language code as a BCP 47 tag, requires a type, and states that the collection of price offerings should be between 3 and 8 inclusive. Each PriceOffering requires a header of 1 to 25 characters, a description of 1 to 25 characters, a final URL and a price, where the price is a Money object and so carries its own currency code and amount in micros.
That structure creates one Singapore decision the documentation does not make for you. Because the price is a Money value with its own currency code, the figure in your ad is not automatically the currency your account is billed in. A Singapore advertiser can publish price offerings in a currency a Singapore buyer does not pay in, and nothing in the field validation will stop it.
So before you publish price assets from Singapore, settle four things:
- The currency code on every offering, checked individually. One offering in the wrong currency is a wrong price in public.
- Whether the figure includes GST. A price shown to a Singapore consumer that excludes 9 per cent is a different offer from the one they will be asked to pay.
- Whether the landing page agrees. Each offering carries a required final URL. The price in the ad and the price on the page it points at have to be the same figure.
- Who updates it when the price changes. Between 3 and 8 offerings is between 3 and 8 published prices, and the ad does not know your price list moved.
On the rules around displaying prices in Singapore advertising, the body to read is the Advertising Standards Authority of Singapore, an advisory council to the Consumers Association of Singapore. Its own code page, read 27 October 2026, lists an advisory on the display of full prices among the documents to be read with the Singapore Code of Advertising Practice. We followed that link and read it: the advisory is titled Media Advisory on the Disclosure of Full Prices in Advertisements (Revised), it updates an advisory of 20 October 2008, and its stated scope is how the prices of travel products and services should be advertised. So it is a travel sector document rather than a general price display rule, and we are saying so rather than presenting it as something wider. Nothing here is legal or tax advice, and a question about what your own price display has to say belongs with your advisers.
Questions Singapore advertisers ask about cost micros, CPM and price assets
How do I convert cost micros into Singapore dollars?
Divide by 1,000,000 and read the currency code on the same object. Google's Money reference states that amount_micros is an amount in micros where one million is equivalent to one unit, and that currency_code is a three character ISO 4217 code. So 4,500,000 micros with a currency code of SGD is SGD 4.50. Never convert without the code, because the integer looks identical in every currency.
Does the Google Ads API cost money?
Google publishes no fee for it. What it publishes is a quota by access level, read 27 October 2026, with Explorer at 2,880 operations a day against production accounts, Basic at 15,000 and Standard unlimited, and a RESOURCE_EXHAUSTED error when you exceed it. Plan the access level, not a budget line.
What is a good CPM for a Singapore campaign?
Ask what it bought before you ask whether it is good. CPM is a price for a thousand impressions, and cheap impressions are the easiest thing to buy in this market and the hardest to turn into a Singapore enquiry. 2Stallions' Singapore table, read 27 October 2026, puts display clicks at SGD 0.30 to SGD 1.30 across every sector it lists against search clicks up to SGD 12.00, and that gap is a statement about intent rather than about value.
Why does my average cost per click change when my bids do not?
Because you set a maximum, not a price. The three usual causes are a shift in campaign mix, since cost_micros sums CPC and CPM costs, a change in who else is bidding, which in a one city market happens quickly, and a change in which queries you matched. Segment by campaign type and compare average_cpc against average_cost to see which it was.
Can I show Singapore dollar prices in a Google ad?
Yes, through price assets, and the currency is yours to set because each price offering carries its own Money value with its own currency code. That also means it is yours to get wrong. Check each offering's code, decide and record whether the figure includes the 9 per cent GST, and make the landing page named in the required final URL show the same number.
Why will my report total not match my Google invoice?
Four usual reasons, in order of likelihood. Micros read as units. The monthly spending limit of 30.4 times the average daily budget rather than the budget you entered. The tax line, which exists on the invoice and not in the report. And a billing period that is not your calendar month. Reconcile in that order and the gap normally closes on the first or second.
The figure with no micros field
Every number in this article has an integer behind it that you can export, divide and argue with. The newest route to a Singapore buyer does not. When somebody asks an assistant to name a supplier in Singapore, there is no impression count, no currency code and no cost field, so there is nothing to reconcile and nothing to export. The only quantity is how often your business is the one named. AI Knows Us turns that into a repeated count with its sources attached, which is the closest thing this channel has to a reportable line.
If you are building the reporting layer that reads these fields, the parameters worth putting into your URLs before you start are in our page on the Google Ads tracking template to start from, because a cost figure you cannot attribute is a cost figure you cannot act on. For which charging unit each campaign type actually produces, see the unit Google Ads charges you in.