Running a payout cycle

Step-by-step end-of-month flow for approving conversions, deducting your margin, and generating invoices.

Updated 2026-05-21

Payouts run on whatever cycle you define (Net-30 is typical). The panel doesn't move money — it generates the invoice, you settle externally via your bank, PayPal, or processor.

End-of-cycle checklist

    • Lock the cycle. Settings → Payouts → Close cycle for M. After this, no new conversions can attribute to that cycle.
    • Sweep for held conversions. Open Reports → Conversion detail → filter status = held. Decide approve / reject for each. Held conversions are usually advertiser-flagged or fraud-suspected.
    • Apply your margin. Deduct your network's cut from the publisher gross before invoicing.
    • Generate invoices. Publishers → Generate invoices for cycle. The system writes one PDF per publisher with their conversions + payout total + your bank reference field.
    • Send payments externally. Outside this platform — PayPal mass-payouts, ACH batch, Wise, etc. Update each invoice's status to Paid once it lands.
    • Sweep for postback failures. Reports → Postback log → filter to failed. Manually replay any conversions the advertiser owes payout on but where their postback never reached the edge.

Holdback policy

It's standard to hold a percentage (5–10%) of each cycle as reserve against chargebacks. Configure this under Settings → Payouts → Holdback. After 60 days the held amount auto-releases.

If you skip the holdback and an advertiser disputes 30 conversions a week after payout, you've already paid the publisher — you eat the loss. Holdbacks exist for a reason.

When a publisher disputes their payout

The single most common dispute: "You're showing 95 conversions, I'm showing 102."

Most of the time the difference is rejected/held events the publisher didn't see in their own postback log. Walk them through the Conversion detail filter for their account, with status set to all. The two numbers should reconcile.

If they're still seeing more on their side: ask for the transaction_ids missing on yours. Trace each one — often it's a postback that returned 5xx and never made it to the edge.