Product
Publishers
Advertisers
Networks
Help
Pause animations
  • Incentivized traffic. Users who complete an offer in exchange for a reward from the app they found it in.What is incentivized traffic?
  • Approved one by one

Brand-paid offers inside the rewards tab you built.

Offers agreed with you, in your own screens, through the Offer API. Advertisers pay for each action; you choose what members get on most offers.

Sign-up is by request. We reply by email.

Who it's for

For banks with a rewards tab to fill.

  • You have a rewards or earn area Cash back, points or a balance members already check.
  • You build your own screens Your designers own the layout. We send data, not a widget.
  • You approve every partner We agree each offer with you before it's live.

Not you? Buying sign-ups for your bank? See banking for advertisers

How it works

From an agreed list to a credited member.

  1. We agree the list

    Your team sees each offer before it's live, and we approve offers on your account one by one. Build on the Offer API, or start faster with the Hosted Offerwall.

  2. Pull them into your screens

    One call returns the offers on your account with payouts, steps and a tracking link each. A few campaigns we run ourselves can reach any account, approved-only ones included, so block any offer you didn't agree with block_offer_ids.

    Offer API, one row
    GET /publisher/offers
      ?country=US&platform=ios
      &vertical=none
      &block_offer_ids=aff_7q20
    
    {
      "name": "Harbor Blocks",
      "effectivePayoutUsd": 4.2,
      "trackingUrl": "…/click?…&sub_id={SUB_ID}&device_id={DEVICE_ID}"
    }
    IDs and amounts are examples from our fictional world.
  3. Verify, then credit

    Each conversion and reversal sends a signed postback. Take out verifier, recompute the HMAC-SHA256 of the full URL with your secret, compare, then credit the member. BASE must be the scheme and host in your postback URL.

    Verify a postback (Node)
    const crypto = require("node:crypto");
    const SECRET = process.env.AFOS_SECRET;
    const BASE = "https://api.yourbank.example";
    const url = new URL(req.url, BASE);
    const p = url.searchParams;
    const sig = p.get("verifier");
    p.delete("verifier");
    const expected = crypto
      .createHmac("sha256", SECRET)
      .update(url.toString())
      .digest("hex");
    if (expected !== sig) return res.status(401).end();
    // credit p.get("sub_id")
    IDs and amounts are examples from our fictional world.

Read the Offer API docs

Offer API, one row
GET /publisher/offers
  ?country=US&platform=ios
  &vertical=none
  &block_offer_ids=aff_7q20

{
  "name": "Harbor Blocks",
  "effectivePayoutUsd": 4.2,
  "trackingUrl": "…/click?…&sub_id={SUB_ID}&device_id={DEVICE_ID}"
}
IDs and amounts are examples from our fictional world.
Verify a postback (Node)
const crypto = require("node:crypto");
const SECRET = process.env.AFOS_SECRET;
const BASE = "https://api.yourbank.example";
const url = new URL(req.url, BASE);
const p = url.searchParams;
const sig = p.get("verifier");
p.delete("verifier");
const expected = crypto
  .createHmac("sha256", SECRET)
  .update(url.toString())
  .digest("hex");
if (expected !== sig) return res.status(401).end();
// credit p.get("sub_id")
IDs and amounts are examples from our fictional world.

What your members see

Our data, drawn by your app.

The Offer API sends fields, not a design. Pick a field to see where it lands in your rewards tab.

Offer API · one offer
{
  "id": "aff_hb40",
  ,
  ,
  "goals": [
    {
      "id": "g1",
      ,
      
    }
  ],
  
}
Point at a field in the response, or tab to it, to see where it lands.

Money

What you get paid for.

Install offers pay you once, at install; later steps carry a member reward we don't pay you for. Event-paid offers list what each step pays.

Pay shapes that fit

Pay per install (CPI)
Games and apps members try for cash back. One payout at install.
per install
Pay per sign-up or trial
One payout when the advertiser confirms the action.
per action
Pay per event
Some offers pay on two or more steps. Each step's price is on the offer.
per step

See the payout math Estimate your revenue

Live now, in these categories

  • Monopoly Go Games · iOS $9.49 per install
  • Ancestry.com Sign-ups · Web $6.00 per free-trial start
  • RAID: Shadow Legends Games · iOS $8.82 per install
  • myPurina: Install and Register Sign-ups · iOS $3.50 per sign-up
  • Travel Town Games · iOS $5.89 per install
  • Whatnot Sign-ups · Web $13.09 per sign-up
Games and sign-ups from the public Top Offers Feed, finance offers left out. Your list is agreed with you. US offers, payouts in dollars.

Tracking and money

Tracking and money work the same everywhere.

One conversion, in order: your user's tap, our click record, the advertiser's confirmation, then a signed postback to your server.

  1. Tap u_48213
  2. Click clk_7Q2f81
  3. Conversion advertiser confirms
  4. Postback signed
  5. Your server 200 OK
  • Click Tracking

    Every tap is recorded with your user's ID and up to ten of your own values, sub1 to sub10.

    How clicks are tracked
  • Signed postbacks

    Each one carries an HMAC-SHA256 verifier made with your secret. Without a secret, we don't send.

    How postbacks work
  • Fraud Defense

    Suspect installs are held, unpaid, until reviewed. Traffic Quality lists the users we reject, with the reason.

    How fraud checks work
  • Reporting

    Trace any conversion from tap to your server, or download every conversion as a CSV.

    How reporting works

Before you start

Rules for banking apps.

What's allowed, what's yours to handle and where we say no.

  • Approval

    Offers are approved one by one on your account.

  • Required

    Offer text comes from the advertiser. Keep claims about rates, bonuses and terms exactly as approved.

  • Ask first

    Tell us what to leave out, such as other banks. On the Offer API, vertical=none leaves out offers we tag as sports betting or real-money gaming.

  • Your job

    Your own disclosures: what members earn, when and in what form.

Questions

What banks ask.

Something else? Write to hello@affiliateos.ai and we reply by email.

Can we keep other banks and gambling off our list?

Yes. We agree offers with you one by one. In your API request, vertical=none leaves out offers we tag as sports betting or real-money gaming, and block_offer_ids blocks any other offer by ID.

Can it match our design?

Yes. The Offer API sends data: names, images, steps, payouts and a tracking link. Your app draws every pixel.

Do you send us members' personal data?

No. The postback carries the member ID you gave us, the offer, the status and the payout. You keep the member record.

Cash back or points?

Either. We pay you in dollars per conversion, and you decide what the member gets and in what form. Where the advertiser sets a reward for a step, the API marks it with userRewardIsAdvertiserSet; pay members that amount.

Is there something for our vendor review?

Start with our security page, then email hello@affiliateos.ai with anything your review needs.

Fill your rewards tab with offers you approved.

Sign-up is by request. We reply by email.