> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adxensor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Earnings & Payouts

> How valid impressions and clicks become revenue, how the 60% revenue share is applied, and how funds move from pending to paid.

Once an impression clears the auction and the fraud shield, it becomes money. This page traces the exact path from a valid event to a withdrawable balance — the revenue formulas, the revenue share, and the wallet lifecycle.

<Info>
  **The headline numbers.** You earn a **60% revenue share** on paid campaigns by default, **50% of the house CPM** on house-filled slots, and **nothing** on invalid traffic. Earnings are credited **daily**, and funds become withdrawable after a hold set by your [payout tier](/publishers/how-it-works/traffic-quality).
</Info>

## How revenue is computed

Each night, AdXensor aggregates the day's **valid, non-bot** events per site and per campaign, then computes gross revenue based on the campaign's goal:

| Campaign goal             | You're paid per   | Gross formula                    |
| ------------------------- | ----------------- | -------------------------------- |
| **Traffic (CPC)**         | Click             | `clicks × CPC bid`               |
| **Everything else (CPM)** | 1,000 impressions | `(impressions ÷ 1000) × CPM bid` |

<Note>
  The model is **CPM by default** and **CPC only for traffic-goal campaigns**. Impressions and clicks flagged as invalid are filtered out *before* this calculation — bots never contribute a cent of gross revenue.
</Note>

### The revenue share

For paid campaigns, AdXensor computes the **gross** spend, then applies your revenue share:

```
Your earnings  =  Gross revenue  ×  your revenue share   (default 60%)
```

Your share is set per account (admin-configurable, 0–100%) with a platform default of **60% to the publisher**. House-filled slots work differently — they credit a **flat 50% of the house CPM** with the share already baked in.

<Info>
  **Worked example.** A CPM campaign pays a 500 XOF CPM and your site serves 20,000 valid impressions of it in a day:

  * Gross = (20,000 ÷ 1000) × 500 = **10,000 XOF**
  * Your 60% share = **6,000 XOF** credited to your wallet
</Info>

## Daily credit — nothing is ever lost

The earnings job runs every night and re-scans the **last 3 calendar days**, not just yesterday. Each site-day is credited under a unique identifier, so:

<CardGroup cols={2}>
  <Card title="Self-healing" icon="arrows-rotate">
    If a day failed to credit (an outage, a network blip), the next night's run picks it up automatically. You never have to ask for a missed day.
  </Card>

  <Card title="Never double-counted" icon="shield">
    A day that's already credited is silently skipped on re-scan. Re-running the job can only ever *fill gaps*, never pay twice.
  </Card>
</CardGroup>

## The wallet lifecycle

Your wallet holds three balances. Money moves through them on a fixed path:

```mermaid theme={null}
flowchart LR
    E[Valid events] -->|nightly credit| P[Pending]
    P -->|hold period elapses| A[Available]
    A -->|request payout| L[Locked]
    L -->|admin approves & processes| PAID[Paid out 🎉]
    L -.->|rejected / failed| A
```

<Steps>
  <Step title="Pending" icon="hourglass-start">
    Newly credited earnings land here first. They're yours, but not yet withdrawable — they're serving out the **hold period** set by your payout tier.
  </Step>

  <Step title="Available" icon="circle-check">
    Once the hold elapses, funds move to **available** — this is the balance you can request a payout against.
  </Step>

  <Step title="Locked" icon="lock">
    When you request a payout, the amount moves from available into **locked** so it can't be double-spent while the request is processed.
  </Step>

  <Step title="Paid" icon="party-horn">
    An admin moves the payout through `pending → approved → processing → paid`. Once paid, the locked funds are drained. If a request is rejected or fails, the amount is safely returned to **available**.
  </Step>
</Steps>

## The payout state machine

Every unit of currency you earn walks one auditable path — credited to **pending**, released to **available** after its hold, **locked** the moment you request a payout, and drained only once an admin marks it **paid** — with any rejection or failure returning the amount to available. The outer boxes are your three wallet balances; the nested `Locked` box is the admin payout review.

```mermaid theme={null}
stateDiagram-v2
    direction LR

    state "Pending" as WPending
    state "Available" as WAvailable
    state "Paid out" as PaidOut

    [*] --> WPending: credit (earning)
    WPending --> WAvailable: hold elapses (release)
    WAvailable --> Locked: requestPayout (payout_lock)

    state "Locked" as Locked {
        direction LR
        state "pending" as PPending
        state "approved" as PApproved
        state "processing" as PProcessing
        [*] --> PPending
        PPending --> PApproved: approve
        PApproved --> PProcessing: process
    }

    PProcessing --> PaidOut: complete (payout_paid)
    PPending --> WAvailable: reject (payout_unlock)
    PApproved --> WAvailable: fail (payout_unlock)
    PProcessing --> WAvailable: fail (payout_unlock)
    PaidOut --> [*]

    note right of WPending
      Hold before release:
      30d (new / standard) · 15d (trusted)
    end note
```

<Note>
  Each labelled edge is the exact ledger row that moves your money. `reject` can only happen while a payout is still `pending`; `fail` can happen once it is `approved` or `processing`. In both cases the full amount is unlocked back to **available** — nothing is ever stranded in `locked`.
</Note>

## Payout tiers — what your reputation buys

Your account-wide payout tier (from your sites' [reputation](/publishers/how-it-works/traffic-quality)) sets two things: the **hold period** before pending becomes available, and the **minimum payout** you must reach to withdraw.

| Tier         | Earnings hold | Minimum payout              | How you qualify                                                                                                        |
| ------------ | ------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **New**      | 30 days       | Full platform minimum       | Default for every new account                                                                                          |
| **Standard** | 30 days       | Full platform minimum       | ≥ 1 verified site · avg reputation ≥ 45 · worst invalid rate ≤ 20%                                                     |
| **Trusted**  | **15 days**   | **40%** of platform minimum | ≥ 1 verified site · avg reputation ≥ 65 · worst invalid rate ≤ 10% · (≥ 1 completed payout **or** avg reputation ≥ 80) |

<Note>
  **New and Standard share the same hold and minimum** — reaching Standard doesn't change your payout terms directly. Standard is the eligibility gate you clear (a verified site with clean traffic) on the way to **Trusted**, which is where the tangible upgrades — shorter hold, lower minimum, queue priority — actually kick in.
</Note>

<Tip>
  Reaching **Trusted** is the single best financial upgrade available to you: it **halves your hold** (30 → 15 days), **cuts your minimum payout to 40%** (cash out smaller amounts, more often), and **fast-tracks your requests** to the top of the admin payout queue.
</Tip>

<Warning>
  Tiers are gated by the **worst** invalid rate across all your sites and require at least one **verified** site (a site that has served at least one real impression). One neglected, low-quality property can hold your entire account at the `new` tier — keep every site clean.
</Warning>

## Currency & requesting a payout

Paid-campaign earnings are settled in **XOF** (the platform's billing currency). When you request a payout:

<AccordionGroup>
  <Accordion title="Your available balance must meet the minimum" icon="coins">
    The minimum is the platform minimum scaled by your tier's factor (Trusted pays out at 40% of it). The exact figure in XOF is shown in your dashboard wallet. Requesting below the minimum is rejected.
  </Accordion>

  <Accordion title="Payouts are disbursed via mobile money" icon="mobile">
    Approved payouts are paid out through supported mobile-money operators (e.g. MTN Mobile Money, Moov Money). See the [FAQ](/publishers/support/faq) for the current list and details.
  </Accordion>

  <Accordion title="Your wallet must be single-currency" icon="money-bill-transfer">
    Mixed-currency wallets can't be paid out in one request. In practice paid earnings settle in XOF, keeping wallets consistent.
  </Accordion>

  <Accordion title="An admin reviews before funds move" icon="user-check">
    Every payout is reviewed (`pending → approved → processing → paid`). Trusted publishers are ordered first in the queue. A rejected or failed payout returns the full amount to your available balance — nothing is ever stranded in `locked`.
  </Accordion>
</AccordionGroup>

<Card title="Next: Optimization Playbook" icon="rocket" href="/publishers/how-it-works/optimization">
  You now understand the full machine. Here's the concrete, prioritized checklist to earn more from it.
</Card>
