> AffiliateOS Help Center. Index of every article for AI tools: https://www.affiliateos.ai/help/llms.txt

# Reconcile our numbers with yours, step by step

Troubleshooting · For everyone · Updated 30 October 2026
Web version: https://www.affiliateos.ai/help/troubleshooting/numbers-differ

Export our conversions and join them to your records on `action_id`: the one in our reports is the one on your postbacks. Then work down this list for the rows that differ. The reasons behind each gap are in [Why our numbers and yours differ](https://www.affiliateos.ai/help/reporting/why-numbers-differ).

## What you see

| What you see | What it means | What to do |
|---|---|---|
| A past day's total dropped after you closed it | A reversal came in later, dated on the conversion's day | Count reversals by conversion date |
| Totals differ near the start or end of a day | We count days in UTC | Compare in UTC, or row by row |
| You have more conversions than we do | You counted test postbacks, or the same step twice | Skip `test=true`; dedupe on `action_id` and `status` |
| We show reversals you don't have | Your dedupe dropped them | Dedupe on `action_id` and `status` together |
| We show conversions your server never got | Their delivery failed or found no URL | Filter **Flight Recorder** by **Delivery** |
| Your Hosted Offerwall earnings are too high | You added `revenue` and `payout` together | Use `revenue` only |
| Advertisers: your attribution tool counts more installs than we charged | We charge only events matched to our taps | Compare against **Event logs** |

## Export our side first

Publishers: open **Conversions**, set **From** and **To**, choose **Apply**, then **Download CSV**. Each row has its **Action ID**, **Sub ID**, status, payout and time, and reversed rows say when the reversal came in. Networks: look up each `action_id` in **Reporting**, then **Flight Recorder**.

## Checks, most likely first

### Reversals arrived after you closed the day

**How to confirm:** Publishers: in **Conversions**, rows read `reversed` with **Reversed on** a later date than their **Time**. Networks: the conversion in **Flight Recorder** shows **Reversed because**.

**Fix:** Reconcile by conversion date, not arrival date: a [reversal](https://www.affiliateos.ai/glossary#reversal) is dated on its conversion's day. The conversions list shows it at once; daily totals pick up a reversal of an earlier day at our next rebuild, a few hours later (we rebuild those days four times a day).

### You compare in a different time zone

**How to confirm:** The gap sits at the edges of a day, and the totals over a whole week agree.

**Fix:** Compare in UTC, or compare single rows by `action_id`.

### You counted test postbacks

**How to confirm:** Your records have rows with `test=true`, or sample IDs you don't find in our export.

**Fix:** Skip every row with `test=true`.

### You dedupe on action_id alone

**How to confirm:** We show a reversal for an [action ID](https://www.affiliateos.ai/glossary#action-id) that your records show only as credited.

**Fix:** Dedupe on `action_id` and `status` together, or every reversal looks like a repeat and gets dropped.

### Some postbacks never reached you

**How to confirm:** In **Reporting**, then **Flight Recorder**, publishers set **Delivery** to `failed` or `skipped_no_url`; networks choose a row and read **Network Delivery Response**. These conversions count on our side and never reached yours.

**Fix:** Fix the cause ([Postback not firing or never arrives](https://www.affiliateos.ai/help/troubleshooting/postback-never-arrives)). Publishers: send us the action IDs, and our team can send failed credits from the Offer API and links again; a credit that never reached you gets no reversal postback either.

### You read the wrong money field

**How to confirm:** Your Hosted Offerwall earnings are about the player's reward, or the two added together.

**Fix:** Use `revenue` whenever it's present, and never add the two. Which field holds what: [the usual causes](https://www.affiliateos.ai/help/reporting/why-numbers-differ#the-usual-causes).

### Rejected users are in your numbers

**How to confirm:** Publishers: your own count includes users who show as `rejected` in **Conversions**.

**Fix:** Leave them out of yours. A rejected conversion pays $0 and isn't counted in our totals.

### Advertisers: your attribution tool counts every install

**How to confirm:** Your attribution tool shows more installs or events than you were charged for. **Attribution** shows **Installs from elsewhere**: first opens with no tap of ours behind them.

**Fix:** Compare your records with **Event logs** by `eventId`. We charge only live events with a click ID that matches a tap we recorded; events that come back `campaign_paused`, `insufficient_balance` or `rejected` aren't charged either. More on [attribution tools](https://www.affiliateos.ai/help/reporting/why-numbers-differ#advertisers-our-numbers-and-your-attribution-tools).

> **A day you closed can still change.** A reversal can arrive long after its conversion, and it lowers the day the conversion was earned. Keep the `action_id` and `status` of every postback so you can match each reversal to its credit.

## Send us this

- The email you sign in with, and your role.
- The date range you compared, and the time zone you used.
- Your totals and ours, and the offer IDs involved.
- Three to five action IDs (or event IDs) that differ, and what each side shows for them.
- Your export, if you can share it.
