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

# How money moves: click, conversion, postback, payout

Getting started · For everyone · Updated 30 October 2026
Web version: https://www.affiliateos.ai/help/getting-started/how-money-moves

Money moves in four steps. We record the tap as a click, the advertiser's tracking confirms an install or a step, we match it to that click and send the publisher a signed postback with its payout, and the publisher credits its own user. The advertiser pays for the steps it prices, the publisher earns its payout and the player's reward comes from the publisher.

> Figure: Example conversion trace for click clk_7Q2f81 from user u_48213: click recorded at 2:06 PM, install of Harbor Blocks reported, payout of $4.20 recorded, postback delivered to api.pebble.example.

## The click

A user taps an offer's [tracking link](https://www.affiliateos.ai/glossary#tracking-link). We record the tap with its own [click ID](https://www.affiliateos.ai/glossary#click-id), keep the publisher's [sub ID](https://www.affiliateos.ai/glossary#sub-id) on it, run our traffic checks and send the user on to the store or the site.

A tap we refuse never reaches the advertiser, so nobody pays for it. The user sees "This offer isn't available for your account", and the offer stays live for everyone else.

## The conversion

The advertiser's tracking reports the install or the step inside the app, and we match it to the click ID. A step that can't be matched to a click can't be paid to anyone.

Advertisers who run campaigns directly on AffiliateOS capture `afos_click_id` from the tap's landing URL and send it back as `clickId` with each event from their server. A live event that matches a tap is charged its price from their prepaid balance. An event without a click ID is logged as `missing_attribution`, and [test events](https://www.affiliateos.ai/glossary#test-event) are never charged.

## The postback

We send the publisher a signed [postback](https://www.affiliateos.ai/glossary#postback). `sub_id` says which user it belongs to, `action_id` identifies the conversion, `status` is `completed`, `payout` is the publisher's earnings and `user_payout` is the player's reward in USD when there is one. The publisher checks the [signature](https://www.affiliateos.ai/glossary#signature), then credits its user in its own currency.

On the Hosted Offerwall the fields shift: `revenue` is the publisher's earnings and `payout` is the player's reward. We only send postbacks once the publisher has created a postback secret; until then, conversions count in reports but nothing reaches its server.

## The payout

Each completed conversion counts toward what we pay the publisher. The payout the offer list shows for a step is the payout the postback carries for it. Publishers find each conversion in **Conversions**, the totals in **Reporting** and their lifetime earnings in **Billing**. Billing is open to Owners, Admins and teammates with earnings access.

## Worked example

Example. At 2:06 PM player `u_48213` taps Harbor Blocks, a game by Tidewater Games, inside Pebble Rewards on an iPhone in Texas. We record `clk_7Q2f81`. At 2:09 PM the player installs and opens the game, the game's tracker reports the install, and we match it to `clk_7Q2f81`.

A second later Pebble Rewards gets a postback with `sub_id=u_48213`, `status=completed`, `payout=4.20` and `user_payout=1.50`, the install reward Tidewater Games set. It checks the signature and credits 1,500 pebbles, and the $4.20 counts toward what we pay Pebble Rewards.

> **Games paid per install pay the publisher once, at install.** When the player reaches level 10 in Harbor Blocks, that step posts back with `payout=0` (`revenue=0` on the wall) and the player's reward in `user_payout`, for example `user_payout=1.50`. Pebble Rewards checks the signature and credits 1,500 pebbles, at 1,000 pebbles per $1. Offers paid per event list what each step pays the publisher.

## Edge cases

- **Reversals.** When the advertiser or our checks take a conversion back, we send a second postback with the same `action_id` and `status=reversed`. A [reversal](https://www.affiliateos.ai/glossary#reversal) isn't paid, so deduct what you credited.
- **Test postbacks** carry `test=true`. They check your server, not a conversion: log them and skip crediting.
- **Publishers who joined through a network** see their own payout, set by their network. The network sees its own numbers.
- **Advertiser balance.** When it can't cover an event, the event is logged as `insufficient_balance` and not charged.
