Business6 min read

How to Treat Ad Credits and Prepaid Balances Without Distorting Channel ROI

S
SophiaAuthor
How to Treat Ad Credits and Prepaid Balances Without Distorting Channel ROI

Why “spend” gets messy in real-world ad accounts

In most growth reporting, “spend” looks straightforward: the amount the ad platform says you spent during a period. But that number can drift away from the economic reality your finance team cares about once you introduce ad credits, prepaid balances, post-pay invoices, refunds, and billing corrections. The result is a common analytics trap: channel ROI swings for reasons that have little to do with performance.

The fix isn’t to pick one “true” spend number and force every team to use it. It’s to separate media delivery cost (what the platform says it delivered) from cash or invoiced cost (what you actually paid or will pay) and to report ROI consistently depending on the decision you’re making.

Three “spend” definitions you should keep distinct

1) Delivery spend (platform cost)

This is the cost tied to impressions/clicks delivered in the ad platform UI and APIs. It’s typically what optimizers use day to day because it aligns with pacing, auctions, and bidding outcomes. However, it may be reduced by credits or later adjusted by refunds and invalid-traffic credits.

2) Billed spend (invoice amount)

This is what appears on an invoice for a billing period. It may lag delivery dates, bundle adjustments, and reflect credits applied at billing time. For accrual-based reporting, billed spend is often closer to “cost of advertising services received,” but it still can include timing differences and corrections.

3) Cash spend (payments)

This is when money actually leaves your bank account (or card settles). It’s the right choice for cash-flow forecasting, but it’s the least useful for day-to-day optimization. Prepayments especially can make cash spend spike even when delivery is steady.

When ad credits show up and how they break ROI

Ad credits (promotions, make-goods, service credits, partner credits) can appear in different ways depending on the platform:

  • Credits applied to invoices: Delivery cost remains “normal,” but the invoice net amount drops.
  • Credits reflected in platform cost: Reported cost is reduced, sometimes line-itemed as “adjustments.”
  • Credits tied to a specific campaign vs account-level credits: The allocation logic changes what “channel ROI” looks like.

If you blend credits into your main spend metric without labeling them, you can accidentally “improve” ROI for a channel that simply received a one-off credit. The channel didn’t become more efficient; the accounting did.

Recommended approach for credits

  • Keep gross delivery spend and credit amount as separate fields.
  • Calculate net spend explicitly: net = gross - credits - refunds + fees (if applicable).
  • Decide where credits live: channel-level if clearly attributable, otherwise unallocated/overhead.

This preserves analytical honesty: your ROAS can be reported on gross spend for performance comparisons, while finance-aligned ROI can use net spend.

Prepaid balances and the timing illusion

Prepaid accounts invert the typical “spend then pay” pattern. You may load $50,000 in March, deliver ads across April and May, and see the platform report delivery cost daily. If your reporting pipeline mistakenly treats “top-ups” as spend, you’ll inflate March spend and understate April/May spend, even though delivery happened later.

Two clean ways to model prepaid

  • Delivery-based spend with a separate balance table: Track top-ups and ending balance, but don’t use them as spend.
  • Accrual-style expense recognition: Recognize spend when ads are delivered, while payments update a prepaid asset account.

Either way, the principle is the same: ROI should be tied to delivery period unless you are explicitly analyzing cash-flow timing.

Invoice adjustments and refunds without corrupting trendlines

Refunds and invoice adjustments happen for many reasons: billing disputes, invalid traffic, policy issues, overdelivery corrections, or contractual make-goods. The analytics problem is usually period alignment. Adjustments often post in a later month than the delivery that caused them.

Practical rules for adjustment handling

  • Store adjustments as separate transactions with their own date, amount, currency, and reference (invoice ID, credit memo, etc.).
  • Decide an attribution policy: apply adjustments to the original delivery period when possible, or keep them in the posting period but report them separately.
  • Never overwrite raw platform spend. Keep raw, then layer adjustments as transformations.

This prevents “mystery dips” where a channel looks suddenly efficient (or inefficient) because a credit memo landed this month for last quarter’s delivery.

How to keep channel ROI consistent across teams

Most conflicts come from different stakeholders using different spend definitions without realizing it. A simple operating model usually resolves it:

  • Growth/paid media views: gross delivery spend; focuses on auction efficiency and pacing.
  • Finance views: net billed spend; focuses on recognized expense and contractual reality.
  • Leadership views: both, side by side; focuses on decisions, not arguing about numbers.

In your dashboards, label metrics explicitly (for example “Spend (Gross Delivery)” vs “Spend (Net of Credits/Refunds)”), and document which ROI formulas depend on which spend field.

Data engineering checklist for credits, prepaid, and adjustments

Normalize before you calculate

  • Standardize currency conversion at a consistent rate policy (daily/monthly average), and apply it consistently to both spend and credits.
  • Harmonize naming so that adjustments can be joined to the right account, channel, or campaign family.

Model with additive components

  • Raw delivery cost
  • Credits (promotional, make-good, partner)
  • Refunds/chargebacks
  • Fees/taxes (where relevant)
  • Net spend (calculated)

This structure makes audits easier and supports multiple ROI definitions without duplicating logic.

Operationalize governance

Teams often discover “spend isn’t spend” only when a board deck is due. You can reduce that risk by treating reporting as governed infrastructure: documented metric definitions, versioned transformations, and traceable inputs. Platforms like Funnel.io are commonly used as marketing data infrastructure to collect delivery metrics across channels, standardize them, and apply consistent transformations so credits and adjustments don’t silently rewrite performance narratives.

Where internal evidence helps when numbers don’t reconcile

When marketing and finance numbers diverge, the resolution is rarely a single screenshot. It’s usually a chain: platform reporting → exported invoices/credit memos → transformation logic → dashboard metric definitions. If you’re building an internal process for documenting mismatches and making the decision trail clearer, a lightweight evidence packet can reduce back-and-forth and speed up approvals. For teams formalizing that workflow, see A Feedback Evidence Pack Template for Decision-Ready Product Requests.

Decision guide for which spend to use

  • Optimizing campaigns weekly: gross delivery spend and delivery-based ROAS.
  • Comparing channels over time: show both gross and net; call out credits as a separate line.
  • Budget planning and forecasting: net billed spend, plus known future credits and prepaid balances.
  • Cash runway: payments and prepaid top-ups, not delivery cost.

Once the organization agrees on these lenses, credits, prepaid balances, and invoice adjustments stop being “data errors” and become what they are: financial events that need clear modeling so ROI remains comparable and decision-ready.

FAQ

How should Funnel.io users report ROI when ad credits reduce the invoice total?

Do prepaid top-ups count as marketing spend in Funnel.io reporting?

How can Funnel.io help reconcile platform spend with finance invoices?

Should refunds be applied to the original delivery month or the posting month in Funnel.io dashboards?

What’s the safest way to define “spend” across teams using Funnel.io?